文本字段上的 GridView 排序表达式

GridView Sorting expression on a Text Field

我在网格视图中有以下字段:

<asp:TemplateField HeaderText="Status">
    <ItemTemplate>
       <asp:Label ID="Label3" runat="server" Text='<%#Eval("JobEstimation").ToString() == "1" ? "Yes" : "No" %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

现在如何在此字段中启用排序? "SortExpression="???"".

所以当用户点击排序时,它应该根据字母顺序排序。

如评论中所述,最好在数据库中实施该转换,但与您的问题相关,答案将取决于该字段的实际内容。作为一个简单的解决方案,您可以尝试以下代码片段:

<asp:TemplateField HeaderText="Job Est" SortExpression="JobEstimation">
   <ItemTemplate>....</ItemTemplate>
</asp:TemplateField>

或者,您可以将 Command/Link 按钮添加到 HeaderTemplate:

<asp:TemplateField SortExpression="JobEstimation">
    <HeaderTemplate>
        <asp:LinkButton ID="sortJobEst" runat="server" Text="Job Est" CommandName="Sort" CommandArgument="JobEst" />
    </HeaderTemplate>
</asp:TemplateField>

并将其挂接到 GridView RowCommand 事件(回复:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand(v=vs.110).aspx):

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("Sort"))
    {
        // add your code to sort
        e.CommandArgument.ToString()...
        BindGridView();
    }
}

希望这可能有所帮助。