如何过滤Telerik的RadGrid的GridTemplateColumns

时间:2011-11-07 17:07:04

标签: c# asp.net telerik filtering radgrid

我的GridTemplateColumn中有两个RadGrid。默认过滤对我不起作用,我想更改它。

GridTemplateColumns如下所示:

<telerik:GridTemplateColumn FilterControlAltText="Filter Online column" HeaderText="Online"
    UniqueName="Online">
    <ItemTemplate>
        <asp:CheckBox ID="chkOnline" runat="server" Checked='<%# CheckForOnline(Eval("ID")) %>'
            Enabled="False" />
    </ItemTemplate>
    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="100px" />
</telerik:GridTemplateColumn>

和另一个:

<telerik:GridTemplateColumn FilterControlAltText="Filter FileSize column" HeaderText="FileSize"
    UniqueName="FileSize" Visible="False">
    <ItemTemplate>
        <asp:Label ID="lblFileSize" runat="server" Text='<%# Eval("FileSize") %>'></asp:Label>
    </ItemTemplate>
    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn FilterControlAltText="Filter FileSizeChange column" HeaderText="FileSize"
    UniqueName="FileSizeChange">
    <ItemTemplate>
        <asp:Label ID="lblFileSizeChange" runat="server" Text='<%# ChangeFileSize(Eval("FileSize")) %>'></asp:Label>
    </ItemTemplate>
    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</telerik:GridTemplateColumn>

如您所见,FileSize TemplateColumn已停用,而我正在使用FileSizeChange

FileSize字符串类似于(213435) - &gt;这个数字显示了我们的字节FileSizeChange类似于(231 MB)/

如何为OnlineFileSizeChange GridTemplateColumn编写过滤?

3 个答案:

答案 0 :(得分:5)

要在模板列上使用过滤,您需要设置 DataField 并将数据字段添加到DataKeyNames

例如:

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" AllowFilteringByColumn="True">
    <MasterTableView DataKeyNames="ID">
        <Columns> 
            <telerik:GridTemplateColumn DataField="ID" FilterControlAltText="Filter Online column" HeaderText="Online" UniqueName="Online">
                <ItemTemplate>
                    <asp:CheckBox ID="chkOnline" runat="server" Checked='<%# CheckForOnline(Eval("ID")) %>' Enabled="False" />
                </ItemTemplate>
                <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="100px" />
            </telerik:GridTemplateColumn>
...
etc, etc

答案 1 :(得分:4)

如果您需要对项目模板列进行过滤,请确保在项目模板列上设置以下属性:

DataField="FileSize" AllowFiltering="true" AutoPostBackOnFilter="true" DataType="System.String"

如果要隐藏过滤器功能图标,这两个是可选的: ShowFilterIcon="false" CurrentFilterFunction="Contains"

还要确保在radgrid上启用了过滤功能。

这是关于它的好文章: http://www.telerikschool.com/2011/11/textbox-in-gridtemplatecolumn.html

答案 2 :(得分:1)

因为这是您手动构建的ItemTemplate,所以您需要手动过滤。请参阅Telerik文档的此页面:http://www.telerik.com/help/aspnet-ajax/grid-operate-with-filter-expression-manually.html