2014-07-21 20 views
0

我的應用程序由一個DropDownList控件組成,該控件顯示一個包含與從DropDownList中選擇的名稱相關的數據的GridView。我試圖向網格中添加排序功能,但是從DropDownList中選擇一個名稱並在Gridview中顯示相應的數據後,我單擊一個列名進行排序,但是然後gridView變爲空白(點擊列名稱)。Gridview無法在單擊已排序的列後重新綁定數據

超文本:

<asp:GridView ID="gvShipments" runat="server" Width="718px" EmptyDataText="PO Number Not Found" AutoGenerateColumns ="false" CssClass="Table_default" AllowSorting="True" OnSorting="gvShipments_Sorting"> 
       <Columns> 
        <asp:BoundField DataField="shipment_guid" HeaderText="Guid" Visible ="false" /> 
        <asp:BoundField DataField="company_name" HeaderText="Supplier" SortExpression="company_name" /> 
        <asp:HyperLinkField DataTextField ="ponumber" DataNavigateUrlFields ="shipment_guid" DataNavigateUrlFormatString ="~/securepages/shipmentaddedit.aspx?shipment_guid={0}" headertext="PO" SortExpression="ponumber" /> 
        <asp:BoundField DataField="Carrier_Name" HeaderText="Carrier" SortExpression="Carrier_Name" /> 
        <asp:BoundField DataField="TrackingLink" HeaderText="Tracking#" SortExpression="TrackingLink" /> 
        <asp:BoundField DataField="Plant_Name" HeaderText="Shipped To" SortExpression="Plant_Name" /> 
       </Columns> 
     </asp:GridView> 

背後的代碼:

頁面加載:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      If Not IsPostBack Then 

      DropDownList1.Items.Insert(0, New ListItem("---Select---", "---Select---")) 
      FillDropDownList() 

      ViewState("SortExpression") = " Shipment_Guid ASC" 
      'gvShipments.DataBind() 
     End If 
    End Sub 

GridView的Sorting事件:

' GridView Sorting Event 
    Protected Sub gvShipments_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs) 
     Dim strSortExpression As String() = ViewState("SortExpression").ToString().Split(" "c) 

     ' If the sorting column is the same as the previous one, 
     ' then change the sort order. 
     If strSortExpression(0) = e.SortExpression Then 
      If strSortExpression(1) = "ASC" Then 
       ViewState("SortExpression") = Convert.ToString(e.SortExpression) & " " & "DESC" 
      Else 
       ViewState("SortExpression") = Convert.ToString(e.SortExpression) & " " & "ASC" 
      End If 
     Else 
      ' If sorting column is another column, 
      ' then specify the sort order to "Ascending". 
      ViewState("SortExpression") = Convert.ToString(e.SortExpression) & " " & "ASC" 
     End If 

     ' Rebind the GridView control to show sorted data. 
     gvShipments.DataBind() 
    End Sub 

顯示在GridView中的數據:

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) 
     s = WebConfigurationManager.ConnectionStrings("ShipperNotificationConnectionString").ConnectionString 
     con = New SqlConnection(s) 
     con.Open() 
     cmd = New SqlCommand("SELECT Shipment.Shipment_Guid, SupplierCompany.company_name, Shipment_Po.PONumber, Carrier.Carrier_Name, Shipment.TrackingLink, Plant.Plant_Name FROM Plant INNER JOIN Shipment ON Plant.Plant_ID = Shipment.Plant_id INNER JOIN SupplierCompany ON Shipment.Company_Guid = SupplierCompany.Company_guid INNER JOIN Shipment_Po ON Shipment.Shipment_Guid = Shipment_Po.Shipment_guid INNER JOIN Carrier ON Shipment.Carrier_Id = Carrier.Carrier_ID WHERE Plant.Plant_Name ='" + DropDownList1.SelectedItem.ToString() + "'" + "ORDER BY SupplierCompany.company_name ASC ", con) 
     dr = cmd.ExecuteReader() 
     gvShipments.DataSource = dr 
     gvShipments.DataBind() 
     dr.Close() 
     con.Close() 
    End Sub 

我能得到一些幫助,請爲我在做什麼錯在這裏?在此先感謝

回答

0

我解決了這個問題,基本上使用sqlDataSources並將其綁定到Gridview

相關問題