asp.net - 按适当的列(即 TemplateField)对 gridView 进行排序

标签 asp.net gridview sqldatasource

我在 gridView 中对列进行排序时遇到问题。我只想选择列中名称相同的那些行,例如“完成”

我的 gridView 由几个 BoundField 和 TamplateFields 组成。当我想按正确的 BoundField 排序时,我将正确的字符串放入属性 FilterExpression。例如:

GridView 中的字段: <asp:BoundField DataField="identifier" HeaderText="Case number" SortExpression="identifier" />

所以我设置 FilterExpression = "[identifier] LIKE '%" + txtCaseNumber.Text + "%'"

其中 identifier 是 BoundField 中的 DataField,在这种情况下一切正常。 但是,当我想从 TempateField 的名称等于 Fininish 的列中选择适当的行时,我不知道该怎么做。 TemplateField 的示例如下所示:

<asp:TemplateField HeaderText="Status" SortExpression="Status">
                    <ItemTemplate>
                        <asp:Label ID="lblStatus" runat="server" Text='<%# Utils.ConvertToProcessStatus((int)Eval("status"))%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

如果有人知道我该怎么做?

感谢您的帮助。


没关系,但我忘了提到我有自己的用户控制 (ucCaseFilter),它由我从中选择状态的 DropDownList 组成。例如:Failed、InProgress、Finish ... 在这个控件中,我创建了公共(public)属性 Filter,我想分配字符串值,该值将选择适当的列并对它们进行排序。

Filter = "[???] = '" + ddlCaseStatus.SelectedValue + "'"; 

然后在gridView中使用它:

FilterExpression = ucCaseFilter.Filter;

我不知道如何获取列名称或其他让我按“状态”列排序的方法。

如果我不明白以前的回答,它指的是正确的解决方案

最佳答案

更改您的 <asp:TempleteField />添加<HeaderTemplate />带有 LinkButton 的标记像这样:

<asp:TemplateField SortExpression="Status">
    <HeaderTemplate>
        <asp:LinkButton ID="lnkSort" runat="server" Text="Status" CommandName="Sort" CommandArgument="Status" />                
    </HeaderTemplate>
</asp:TemplateField>

并在grd_RowCommand事件句柄“排序”命令并使用 CommandArgument构建您的过滤器字符串

protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("Sort"))
    {
        FilterExpression = e.CommandArgument.ToString() + " LIKE '%" + txtCaseNumber.Text + "%'";
        BindGridView();
    }   
}

关于asp.net - 按适当的列(即 TemplateField)对 gridView 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661086/

相关文章:

html - SQL 按日期显示每个任务的最新记录

c# - ASP.NET Server.HtmlEncode 不会编码 €

asp.net - Amazon SES 停止工作

c# - 不使用数据源控件的 gridview Inner Join 查询

java - 如何在Java中从数据源名称获取sqlserver数据库名称

java - Flowable在Spring Boot中使用数据源配置使用mysql创建用户定义表

javascript - 谷歌地图反向地理编码不返回正确/准确的地址

asp.net - MVC session 过期 - 从剩下的地方继续

wpf - WPF的gridview中如何设置某列的背景色

android - 图像的 GridView 没有得到刷新