通过适当的列是模板列排序的GridView [英] Sort gridView by proper column which is TemplateField

查看:120
本文介绍了通过适当的列是模板列排序的GridView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题,在GridView的排序列。我只想选择列的那些行这等于命名,例如已完成

I have got problem with sorting column in gridView. I want to select only those rows in column which name equal for example "Finished"

我的GridView控件包含一些绑定列和TamplateFields的。当我想通过适当的绑定列排序我把正确的字符串财产FilterEx pression。例如:

My gridView consists of few BoundField and TamplateFields. When I want to sort by proper BoundField I put proper string to property FilterExpression. For example:

场的GridView:
< ASP:BoundField的数据字段=标识符的HeaderText =案号SORTEX pression =标识符/>

Field in GridView: <asp:BoundField DataField="identifier" HeaderText="Case number" SortExpression="identifier" />

所以我设置
FilterEx pression =[符] LIKE'%+ txtCaseNumber.Text +%'

其中的标识的是数据字段的绑定列,在这种情况下,一切正常。
但是,当我要选择从TempateField列wihich名等于Fininish适当的行,我不知道我应该怎么做。
模板列中的exaple看起来是这样的:

where identifier is DataField in BoundField and In this case everything is ok. But when I want to select proper rows from column wihich name equal Fininish from TempateField I don't know how I should do it. Exaple of TemplateField looks like this:

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

如果有谁知道我能做到这一点?

If anyone know how I can do it??

感谢您的帮助。

这是确定,但我忘了提,我有它由DropDownList的我从中选择状态的我自己的用户contron(ucCaseFilter)。例如:失败,inProgress,则完成...此控件创建公共财产过滤器,我要分配,这将是选择合适的列和进行排序字符串值

It's ok but I forgot mention that I have my own user contron (ucCaseFilter) which consists of DropDownList from which I choose status. For example: Failed, InProgress, Finish ... Inside this control I create public property Filter and I want to assign string value which will be select proper column and sort them .

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

然后在GridView中使用它:

Then in gridView use it:

FilterExpression = ucCaseFilter.Filter;

我不知道如何获得列名或其它的办法,买不起我排序状态列。

I don't know how get column name or other approach which afford me sort by "Status" column.

如果我不明白previous answerd,它是指纠正soluti

If I didn't understand previous answerd and it refer to correct soluti

推荐答案

更改&LT; ASP:TempleteField /&GT; 添加&LT; HeaderTemplate中/&GT; 标记以的LinkBut​​ton 是这样的:

Change your <asp:TempleteField /> to add <HeaderTemplate /> markup with a LinkButton like this:

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

grd_RowCommand 事件句柄排序命令,并使用 CommandArgument 来建立你的过滤字符串

and in grd_RowCommand event handle "Sort" command and use the CommandArgument to build your filter string

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

这篇关于通过适当的列是模板列排序的GridView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆