网格视图中的排序箭头不起作用

本文关键字:不起作用 排序 视图 网格 | 更新日期: 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( 无重复;}