网格视图中的排序箭头不起作用
本文关键字:不起作用 排序 视图 网格 | 更新日期: 2023-09-27 18:34:47
我有如下定义的网格视图
<asp:GridView ID="MyDataGridView" runat="server" CellPadding="4" GridLines="None"
AutoGenerateColumns="False" EmptyDataText="No records found" AllowSorting="True"
AllowPaging="True" PageSize="2"
OnPageIndexChanging="MyDataGridView_OnPageIndexChanging" OnSorting="MyDataGridView_OnSorting" OnRowDataBound="MyDataGridView_OnRowDataBound">
<Columns>
<asp:BoundField DataField="CreatedDate" HeaderText="CreatedDate" SortExpression="CreatedDate" />
<asp:BoundField DataField="NameOfCity" HeaderText="Cityname" />
</Columns>
</asp:GridView>
然后在我的行绑定事件中,我写了下面的代码
protected void MyDataGridView_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
string imgAsc = @" <img src='../Images/asc.gif' border='0' title='Ascending' />";
string imgDes = @" <img src='../Images/desc.gif' border='0' title='Descendng' />";
if (e.Row.RowType == DataControlRowType.Header)
{
foreach (TableCell cell in e.Row.Cells)
{
LinkButton lnkbtn = (LinkButton)cell.Controls[0];
if (lnkbtn.Text == MyDataGridView.SortExpression)
{
if (DataGridView.SortDirection == SortDirection.Ascending)
{
lnkbtn.Text += imgAsc;
}
else
lnkbtn.Text += imgDes;
}
}
}
}
但是当代码运行时,我收到错误"指定的参数超出了有效值的范围。参数名称:索引">
当我调试时,我看到当它第二次进入 foreach 循环时,我在 foreach 循环中收到此错误。它在线LinkButton lnkbtn = (LinkButton)cell.Controls[0];
即使我向前移动光标并跳过错误,我仍然无法看到向上的向下箭头。我做错了什么?
仅供参考,您上面的标签看起来不正确:PageSize="不完整。其次,您真的要添加链接按钮的文本作为图像标签吗?这似乎不对(通常你会设置一个ImageUrl(
还有一种不同的方法。根据 http://blogs.msdn.com/b/scothu/archive/2010/08/28/gridview-with-sort-arrows-and-showing-header-when-empty.aspx您可以定义一些模板
<排序升序标题样式 /> <排序降序标题样式 /> <排序升序单元格样式 /> <排序降序单元格样式 />
进而指定自定义 CSS 样式
<asp:GridView>
风格
th.sortasc a { 显示:块;填充:04px 0 15px; 背景:URL(IMG/ASC.gif( 无重复; }th.sortdesc a{ 显示:块;填充:04px 0 15px; 背景:网址(图像/描述.gif( 无重复;}