带有模板列的GridView设置排序的问题

qq_36815975 2017-08-03 08:55:41
前台代码:


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" DataKeyNames="Id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Width="100%" CellPadding="4" ForeColor="#333333" GridLines="Horizontal" CssClass="myGrid" AllowSorting="true" OnSorting="GridView1_Sorting">
<Columns>
<asp:CommandField ShowSelectButton="True" ShowCancelButton="True" />
<asp:TemplateField HeaderText="部门">
<%-- <EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" Width="154px">
<asp:ListItem Value="营销部">营销部</asp:ListItem>
<asp:ListItem Value="研发部">研发部</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>--%>
<ItemTemplate>
<asp:Label ID="lblDpt" runat="server" Text='<%# Bind("d_Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="姓名" DataField="s_Name" />
<asp:BoundField DataField="RecDate" SortExpression="RecDate" HeaderText="日期" />
<asp:BoundField DataField="Income" SortExpression="Income" HeaderText="金额" />
<%--<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="btnUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="更新" CommandArgument='<%#Eval("Id")%>'></asp:LinkButton>
<asp:LinkButton ID="btnCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="取消" CommandArgument='<%#Eval("Id")%>'></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="btnEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="编辑" CommandArgument='<%#Eval("Id")%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>--%>
</Columns>
<SelectedRowStyle Font-Bold="True" />
</asp:GridView>



后台代码:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string SortExpression = e.SortExpression.ToString();
string SortDirection = "ASC";
if (SortExpression == GridView1.Attributes["SortExpression"])
{
SortDirection = (GridView1.Attributes["SortDirection"].ToString() == SortDirection ? "DESC" : "ASC");
}
GridView1.Attributes["SortExpression"] = SortExpression;
GridView1.Attributes["SortDirection"] = SortDirection;
GridViewDataBind(txtDate.Text);

}


如果设置AutoGenerateColumns=true 可以自动生成排序的列,但是已有的模板列又不能去掉,带有模板列的GridView如何设置排序?
...全文
105 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36815975 2017-08-04
  • 打赏
  • 举报
回复
原来是页面控件的EnableViewState没有设置
qq_36815975 2017-08-03
  • 打赏
  • 举报
回复
又如下面这个GridView全部是数据绑定列,后台也写了代码,但是运行之后点击列标题也没有看出有排序的效果。

<asp:GridView ID="GridView1" runat="server" AllowSorting="true" OnSorting="GridView1_Sorting" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
            <asp:BoundField DataField="dpt" HeaderText="团队" SortExpression="dpt" />
            <asp:BoundField DataField="EID" HeaderText="员工编号" SortExpression="EID" />
            <asp:BoundField DataField="EName" HeaderText="员工姓名" SortExpression="EName" />
            <asp:BoundField DataField="PayDate" HeaderText="发放日期" SortExpression="PayDate" />
            <asp:BoundField DataField="Wage" HeaderText="当月工资" SortExpression="Wage" />
        </Columns>
    </asp:GridView>
后台:

protected void Page_Load(object sender, EventArgs e)
    {

        if(!IsPostBack)
        {
            GridViewDataBind();
        }
      
    }


private void GridViewDataBind()
    {
        string today = DateTime.Now.ToString("yyyy-MM-dd");
        string sql = "select Id,dpt,EID,EName,PayDate,Wage from MonthWage order by dpt,PayDate asc";
        DataTable dt = SQLDBHelper.selectDB(sql);
        GridView1.DataSource = dt;
        GridView1.DataBind();

    }



    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        string SortExpression = e.SortExpression.ToString(); //获得当前排序表达式        
        string SortDirection = "ASC"; //为排序方向变量赋初值      
        if (SortExpression == GridView1.Attributes["SortExpression"]) //如果为当前排序列        
        {
            SortDirection = (GridView1.Attributes["SortDirection"].ToString() == SortDirection ? "DESC" : "ASC");     //获得下一次的排序状态        
        }
        GridView1.Attributes["SortExpression"] = SortExpression;
        GridView1.Attributes["SortDirection"] = SortDirection;
        GridViewDataBind();
    }

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧