【问题标题】:Sort gridView by proper column which is TemplateField按适当的列对 gridView 进行排序,即 TemplateField
【发布时间】:2011-12-01 10:39:06
【问题描述】:

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

我的 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 ... 在这个控件中,我创建了公共属性 Filter,我想分配字符串值,该值将选择适当的列并对它们进行排序。

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

然后在gridView中使用它:

FilterExpression = ucCaseFilter.Filter;

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

如果我不理解之前的回答,它指的是正确的解决方案

【问题讨论】:

    标签: asp.net gridview sqldatasource


    【解决方案1】:

    更改您的 &lt;asp:TempleteField /&gt; 以添加带有 LinkButton&lt;HeaderTemplate /&gt; 标记,如下所示:

    <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();
        }   
    }
    

    【讨论】:

    • 没关系,但我忘了提到我有自己的用户控制(ucCaseFilter),它由我从中选择状态的 DropDownList 组成。例如:Failed、InProgress、Finish ... 在这个控件中,我创建了公共属性 Filter,我想分配字符串值,它将选择正确的列并对它们进行排序。过滤器 = "[???] = '" + ddlCaseStatus.SelectedValue + "'";然后在gridView中使用它:FilterExpression = ucCaseFilter.Filter;我不知道如何获取列名或其他让我按“状态”列排序的方法。对不起,如果我没有理解某些事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多