Asp.net c#GridView将AutoGenerateColumns排序为false

时间:2017-08-28 15:19:22

标签: c# asp.net sorting gridview autogeneratecolumn

我无法使用参数gridviewAutoGenerateColumns = false进行排序 标题不可点击,因此我无法排序,但参数AllowSort = true

这是我的gridview:

 <asp:Label ID="lbSortColumn" runat="server" Visible="False"></asp:Label>
            <asp:GridView ID="gvDeslocFinal" runat="server" Height="181px" Width="1042px" OnRowDataBound="gvDeslocFinal_RowDataBound" AutoGenerateColumns="false" AllowSorting="true" OnSorting="gvDeslocFinal_Sorting" OnPageIndexChanging="gvDeslocFinal_PageIndexChanging" OnSorted="gvDeslocFinal_Sorted" AllowPaging="True">

            <Columns>
                ...
            </Columns>
            <EditRowStyle HorizontalAlign="Center" />
            <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Center" Font-Bold="False" Height="30px" />

            <RowStyle HorizontalAlign="Center" VerticalAlign="Middle" Height="20px" />
        </asp:GridView>

这是我的职能:

     protected void gvDeslocFinal_Sorting(object sender, GridViewSortEventArgs e)
        {
            if (gvDeslocFinal.EditIndex >= 0)
                return;

            string[] values = lbSortColumn.Text.Split(' ');
            if (values[0] == e.SortExpression)
            {
                if (values[1] != null && values[1] == "ASC")
                    lbSortColumn.Text = e.SortExpression + " DESC";
                else
                    lbSortColumn.Text = e.SortExpression + " ASC";
            }
            else
            {
                lbSortColumn.Text = e.SortExpression + " ASC";
            }


        }


 protected void gvDeslocFinal_Sorted(object sender, EventArgs e)
        {
            if (gvDeslocFinal.EditIndex >= 0)
                return;
            BindGrid();
        }

1 个答案:

答案 0 :(得分:0)

在您粘贴的代码段中,没有显示列定义供我确认,但这可能是您的问题:

如果设置AutoGenerateColumns=false,则必须定义列,并且在这些列定义中,必须设置SortExpression属性。例如....

<Columns>
    <asp:BoundField HeaderText="Name" DataField="itemName" SortExpression="itemName"/>
    ...
</Columns>
相关问题