网格视图单击标题以对触发行命令进行排序
本文关键字:命令 排序 视图 单击 标题 网格 | 更新日期: 2023-09-27 18:35:41
我有一个相当简单的GridView。这是列的标记:
<Columns>
<asp:TemplateField HeaderText="JD Name" SortExpression="FullName"
HeaderStyle-HorizontalAlign="Center" ItemStyle-Width="180px" >
<ItemTemplate>
<asp:LinkButton CommandName="edt" CommandArgument='<%#Eval("JurisdictionID") %>' runat="server" Text='<%#Eval("FullName") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="JD Abbreviation" ItemStyle-Width="200px" DataField="JDAbbreviation" SortExpression="JDAbbreviation"
HeaderStyle-HorizontalAlign="Center" />
<asp:TemplateField
HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:LinkButton ID="lnkStat" CommandName="inac" CommandArgument='<%#Eval("JurisdictionID") %>'
runat="server" Text='<%#Utils.GetStatusString((bool) Eval("IsActive")) %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
但是,当我单击要排序的列时,它首先触发行命令事件,然后进入排序事件。谁能告诉我我犯了什么错误?在 RowCommand 参数中,我得到了 SortExpression。这对我来说真的很有趣!
Sort
是一个row command
。 有关详细信息,请查看此 MSDN GridView.RowCommand Event 文章。
在行命令事件中,应添加 if
语句,以便确定何时执行行命令代码。 使用 e.CommandName。
void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
// If multiple buttons are used in a GridView control, use the
// CommandName property to determine which button was clicked.
if(e.CommandName=="Add")
{
// Convert the row index stored in the CommandArgument
// property to an Integer.
int index = Convert.ToInt32(e.CommandArgument);
// Retrieve the row that contains the button clicked
// by the user from the Rows collection.
GridViewRow row = ContactsGridView.Rows[index];
// Create a new ListItem object for the contact in the row.
ListItem item = new ListItem();
item.Text = Server.HtmlDecode(row.Cells[2].Text) + " " +
Server.HtmlDecode(row.Cells[3].Text);
// If the contact is not already in the ListBox, add the ListItem
// object to the Items collection of the ListBox control.
if (!ContactsListBox.Items.Contains(item))
{
ContactsListBox.Items.Add(item);
}
}
}