0

最初のソリューションを実装しました: GridDropDownColumnのListTextFieldによるフィルタリング

私のコードは:
ASPX

<telerik:GridDropDownColumn DataSourceID="SqlDataSource2"  ListTextField="NM_COMUNIDADE" ListValueField="ID_COMUNIDADE"  UniqueName="NM_COMUNIDADE_COLUNA" SortExpression="NM_COMUNIDADE" HeaderText="Comunidade" 
DataField="ID_COMUNIDADE"DropDownControlType="RadComboBox" FooterText="" AllowAutomaticLoadOnDemand="false" AutoPostBackOnFilter="true" CurrentFilterFunction="StartsWith" AllowVirtualScrolling="true" 
ShowMoreResultsBox="true" ItemsPerRequest="10" FilterControlWidth="100%" ShowFilterIcon="false" ColumnEditorID="NM_COMUNIDADE_EDITOR">
</telerik:GridDropDownColumn>

<telerik:GridBoundColumn DataField="NM_COMUNIDADE" HeaderText="NM_COMUNIDADE" SortExpression="NM_COMUNIDADE" UniqueName="NM_COMUNIDADE" Display="false" ReadOnly="true"></telerik:GridBoundColumn>

C#

protected void gridCultos_ItemCommand(object source, GridCommandEventArgs e)
{
    if (e.CommandName == RadGrid.FilterCommandName)
    {
        Pair command = (Pair)e.CommandArgument;
        if (command.Second.ToString() == "NM_COMUNIDADE_COLUNA")
        {
            e.Canceled = true;
            GridFilteringItem filter = (GridFilteringItem)e.Item;
            ((filter["NM_COMUNIDADE"].Controls[0]) as TextBox).Text = ((filter["NM_COMUNIDADE_COLUNA"].Controls[0]) as TextBox).Text;
            command.Second = "NM_COMUNIDADE";
            filter.FireCommandEvent("Filter", new Pair(command.First, "NM_COMUNIDADE")); 
        }
    }
}
protected void gridCultos_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridFilteringItem)
    {
        GridFilteringItem item = e.Item as GridFilteringItem;
        ((item["NM_COMUNIDADE_COLUNA"].Controls[0]) as TextBox).Text = ((item["NM_COMUNIDADE"].Controls[0]) as TextBox).Text;
    }
}

フィルタは、フィルタ関数「StartsWith」で初めて機能し、その後、フィルタ関数を「EqualTo」に変更しているように見えます。

4

1 に答える 1

1

問題は ASPX にありました。

<telerik:GridDropDownColumn UniqueName="CategoryddColumn" ListTextField="EmployeeID"
    HeaderText="Category name" ListValueField="OrderID" DataField="OrderID" DataSourceID="SqlDataSource1"
    AllowVirtualScrolling="true" ShowMoreResultsBox="true" DataType="System.String"
    ItemsPerRequest="10" FilterControlWidth="100%" ShowFilterIcon="false" FooterText=""
    AllowAutomaticLoadOnDemand="false" AutoPostBackOnFilter="true">
</telerik:GridDropDownColumn>
<telerik:GridBoundColumn DataField="EmployeeID" UniqueName="EmployeeID" Display="false">
</telerik:GridBoundColumn>

解決策は、GridDropDownColumn の DataType="System.String" を設定し、CurrentFilterFunction="StartsWith" を削除することでした。フィルターはフィルター機能「含む」で動作しますが、大丈夫です。

于 2013-03-06T13:58:54.527 に答える