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
我能得到一些幫助,請爲我在做什麼錯在這裏?在此先感謝