ASP.net:分页后重复的GridView列

时间:2012-02-19 01:45:05

标签: asp.net

我有一个GridView,它在代码隐藏中动态添加了列。我已经为GridView添加了分页功能,但是当它进入下一页时,它会再次添加列。

因此,GridView从代码隐藏中添加了2列(姓氏和名字)。然后我转到它的下一页,它正确加载下一页的结果,但现在有4列(姓氏,名字,姓氏,名字)。

我在这里做错了什么?

以下是GridView的代码:

<asp:GridView id="GridView3" runat="server" AutoGenerateColumns="False"
EmptyDataText="There are no data records to display."
     AllowPaging="True" 
     OnPageIndexChanging="GridView3_PageIndexChanging"

    CssClass="GridViewStyle" GridLines="None" Width="100%">
<Columns>

<asp:HyperLinkField DataNavigateUrlFields="EmplID"
    DataNavigateUrlFormatString="EmployeeProfile.aspx?EmplID={0}"
    DataTextField="EmplID"
    DataTextFormatString= "<img src='Images/icons/document-search-result.png' alt='View'/> <u>View</u>" >
    <ControlStyle CssClass="titleLinksB" />
<ItemStyle Wrap="False" />
</asp:HyperLinkField>                   

</Columns>

</asp:GridView>

以下是代码隐藏的代码:

Private Sub loadDynamicGrid()

    Dim connetionString As String
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim adapter As New SqlDataAdapter
    Dim ds As New DataSet
    Dim sql As String

    Dim lastName As String
    Dim linkText As String

    lastName = Request.QueryString("lastName")

    connetionString = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString.ToString()
    sql = "SELECT * FROM [EmployeeList] Where [lastname] like '" & lastName & "%' order by lastname"

    connection = New SqlConnection(connetionString)

    Try
        connection.Open()
        command = New SqlCommand(sql, connection)
        adapter.SelectCommand = command
        adapter.Fill(ds)


        Dim curLastName As New BoundField
        curLastName.HeaderText = "Last Name"
        curLastName.DataField = "LastName"
        GridView3.Columns.Insert(0, curLastName)

        Dim curFirstName As New BoundField
        curFirstName.HeaderText = "First Name"
        curFirstName.DataField = "FirstName"
        GridView3.Columns.Insert(1, curFirstName)

        GridView3.Visible = True
        GridView3.DataSource = ds
        GridView3.DataBind()

        adapter.Dispose()
        command.Dispose()
        connection.Close()

    Catch ex As Exception
        MsgBox("Can not open connection ! ")
    End Try

End Sub

最后是分页代码:

Protected Sub GridView3_PageIndexChanging(ByVal sender As [Object], ByVal e As GridViewPageEventArgs)
    GridView3.PageIndex = e.NewPageIndex
    GridView3.DataBind()
End Sub

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我认为您在每次回发时都会调用loadDynamicGrid,而不仅仅是If Not Page.IsPostBack

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        loadDynamicGrid()
    End If
End Sub
相关问题