sortieren Ich versuche, eine GridView
zu sortieren, die 6 Spalten hat, die von einem DataSet
datengebunden sind. Alle diese Daten werden über eine stored procedure
aufgerufen. Ich habe die verschiedenen Posts und Tutorials auf dem Interweb durchgesehen und endlich das gefunden, was meiner Meinung nach das beste für meine Seite war. Aber mit diesem, ich erhalte einen Fehler,Kann nicht in GridView, das ein DataSet in VB.NET verwendet
Ausnahmetyp: System.IndexOutOfRangeException
Nachricht: Kann nicht Spalte LoanOfficer
Ich bin offen zu helfen, zu dieser Methode finden oder auch Anregungen eine andere Art, die Sortierung anzugehen. Hier ist mein Code:
ASPX
<asp:GridView ID="dgvBranchChange" runat="server" AutoGenerateColumns="False" AllowPaging="True"
CssClass="ReportDataGrid" HeaderStyle-CssClass="DataGridHeader" RowStyle-CssClass="AccentShade"
AlternatingRowStyle-CssClass="NoShade" SelectedRowStyle-CssClass="AccentLvl3"
PagerSettings-Mode="NumericFirstLast" PagerStyle-HorizontalAlign="center" PagerStyle-CssClass="paging"
Width="100%" PageSize="25" AllowSorting="True" ShowHeaderWhenEmpty="true" OnSorting="dgvBranchChange_Sorting">
<AlternatingRowStyle CssClass="NoShade"></AlternatingRowStyle>
<Columns>
<asp:TemplateField HeaderText="LoanOfficerID" Visible="false" SortExpression="LoanOfficerID">
<ItemTemplate>
<asp:Label ID="lblBULOID" runat="server" Text='<%# Eval("LO_ID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LoanOfficer" HeaderStyle-HorizontalAlign="Center" SortExpression="LoanOfficer">
<ItemTemplate>
<asp:Label ID="lblBULOName" runat="server" Text='<%# Eval("LO_Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Branch_NameID" Visible="false" SortExpression="Branch_NameID">
<ItemTemplate>
<asp:Label ID="lblBUBranchID" runat="server" Text='<%# Eval("Branch_ID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Branch" HeaderStyle-HorizontalAlign="Center" SortExpression="Branch">
<ItemTemplate>
<asp:Label ID="lblBUBranchName" runat="server" Text='<%# Eval("Branch_Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Move_Begin_Date" HeaderStyle-HorizontalAlign="Center" SortExpression="Move_Begin_Date">
<ItemTemplate>
<asp:Label ID="lblBUBeginDate" runat="server" Text='<%# string.format("{0:MMM yyyy}",Eval("Begin_Date"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Move_End_Date" HeaderStyle-HorizontalAlign="Center" SortExpression="Move_End_Date">
<ItemTemplate>
<asp:Label ID="lblBUEndDate" runat="server" Text='<%# string.format("{0:MMM yyyy}",Eval("End_Date"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="User_who_Added_Change" HeaderStyle-HorizontalAlign="Center" SortExpression="User_who_Added_Change">
<ItemTemplate>
<asp:Label ID="lblBUUserId" runat="server" Text='<%# Eval("User_ID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Change_Date" HeaderStyle-HorizontalAlign="Center" SortExpression="Change_Date">
<ItemTemplate>
<asp:Label ID="lblBUCreationDate" runat="server" Text='<%# string.format("{0:MM/dd/yyyy}",Eval("Create_Date"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Link" HeaderText="Remove Change" ShowDeleteButton="true"
DeleteText="Remove" />
</Columns>
</asp:GridView>
Code hinter
Protected Sub dgvBranchChange_Sorting(sender As Object, e As GridViewSortEventArgs)
'Retrieve the current table
Dim dsBranchChange As DataSet
Dim asParams(0) As IDbDataParameter
Dim lDB As New RHubCoreFunctions.RHubDB
asParams(0) = lDB.dpCreateDataParameter("@AccountID", DbType.String, 8, AccountSelected.AccountID)
dsBranchChange = lDB.GetDataSet("ssp_Account_LO_Branch_Change", asParams)
Dim dt As DataView = dsBranchChange.Tables(0).AsDataView
If dt IsNot Nothing Then
'sort the data
If (dgvBranchChange.SortDirection() = SortDirection.Ascending) Then
dt.Sort = e.SortExpression & " ASC"
Else
dt.Sort = e.SortExpression & " DESC"
End If
dgvBranchChange.DataSource = dt
dgvBranchChange.DataBind()
End If
End Sub
EDIT: Ich fand heraus, dass ich die falsche SortExpression wurde mit. Ich habe das gleiche wie den Header-Text verwendet, so wie es in so ziemlich all den exemplarischen Vorgehensweisen gegeben wurde. Es muss jedoch derselbe Name wie der Spaltenname aus der Tabelle sein, aus der Sie die Daten abrufen, z. B. die SQL-Tabelle.
Aber jetzt kann ich nur die erste Spalte in aufsteigender sortieren, nichts mehr