我想根据网格视图的列进行排序,但是当我单击 HeaderTemplete 的标题时,事件没有触发



我已经创建了一个带有自定义列的网格视图,并希望对它们执行排序。当我单击列时,没有触发任何事件进行排序。

下面是我写的代码

对于.aspx页面

<asp:GridView ID="grdConfigureCustomers" runat="server" AlternatingRowStyle-    BackColor="Aqua" Width="1300px"
        OnRowCommand="grdConfigureCustomers_RowCommand" OnRowEditing="grdConfigureCustomers_RowEditing"
        OnRowUpdating="grdConfigureCustomers_RowUpdating" OnRowCancelingEdit="grdConfigureCustomers_RowCancelingEdit"
        AutoGenerateColumns="false" AllowPaging="true" PageSize="5"
        OnRowDeleting="grdConfigureCustomers_RowDeleting" ShowFooter="true" 
        onpageindexchanging="grdConfigureCustomers_PageIndexChanging"  OnSorting="grdConfigureCustomers_Sorting" AllowSorting="true">
        <HeaderStyle BackColor="AliceBlue" />
        <Columns>
<asp:TemplateField HeaderText="Customer ID">
                <ItemTemplate>
                    <asp:Label ID="lblCustomerId" runat="server" Text='<%# Eval("Customer_ID") %>'></asp:Label>
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtAddCustomerId" runat="server"></asp:TextBox><span style="color:Red;">*</span>
                    </FooterTemplate>
            </asp:TemplateField>
</Columns>
</asp:GridView>

对于.aspx.cs页面

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LoadCustomerConfigurationGridView();
        }
    }
    private void LoadCustomerConfigurationGridView()
    {
        DataTable dt = new DataTable();
        dt = sqlHelper.GetCustomerListInformation();
        grdConfigureCustomers.DataSource = dt;
        grdConfigureCustomers.DataBind();
        Session["data"] = dt;
    }
private void LoadCustomerConfigurationGridView(string srtexpr, string direc)
    {
        DataTable dt = new DataTable();
        dt = sqlHelper.GetCustomerListInformation();
        DataView dv = new DataView(dt);
        dv.Sort = srtexpr + " " + direc;
        grdConfigureCustomers.DataSource = dv;
        grdConfigureCustomers.DataBind();
        Session["data"] = dt;
    }
protected void grdConfigureCustomers_Sorting(object sender, GridViewSortEventArgs e)
    {
        switch (e.SortExpression)
        {
            case "DateLogged":
                if (e.SortDirection == SortDirection.Ascending)
                {
                    LoadCustomerConfigurationGridView("DateLogged", "ASC");
                }
                else
                {
                    LoadCustomerConfigurationGridView();
                }
                break;
        }
    }

请让我知道我错过了什么排序。提前谢谢。

您需要

在模板字段中指定 SortExpression 属性,如下所示:

<asp:TemplateField HeaderText="Customer ID" SortExpression="Customer_ID">

您需要启用排序。 EnableSorting="true" in your asp.net:Gridview。

最新更新