首页 文章

由网格外的RadComboBox进行RadGrid过滤

提问于
浏览
0

我尝试使用此代码从位于Grid外部的外部radcombox过滤radgrid . 我有一个问题 . Visual Studio调试器和SQL事件探查器显示此代码工作并使用正确的过滤器值发送到radgrid正确的过滤器表达式 . 但重新绑定时,radgrid不会使用此表达式过滤数据 . 它显示重新绑定后没有任何过滤的所有数据 . 我该如何解决?这是我的代码C#:

protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
    radgrid.MasterTableView.FilterExpression = "[service_id] LIKE '%" + ddlService.SelectedValue + "%' ";
    GridColumn column = radgrid.MasterTableView.GetColumnSafe("serv_id");
    column.CurrentFilterFunction = GridKnownFunction.EqualTo;
    column.CurrentFilterValue = ddlService.SelectedValue;
    column.AndCurrentFilterFunction = GridKnownFunction.EqualTo;
    radgrid.MasterTableView.Rebind();
}

这是我的ASPX代码与combox设置:

<telerik:RadComboBox ID="ddlService" runat="server" Height="200" Width="240"
  DropDownWidth="310"  DataSourceID="dsServices"
 EmptyMessage="- Select Product -" 
HighlightTemplatedItems="true" CausesValidation="false" 
Filter="Contains" AppendDataBoundItems="true" 
onselectedindexchanged="RadComboBox1_SelectedIndexChanged"
SelectedValue='<%# radgrid.MasterTableView.GetColumn("serv_id").CurrentFilterValue %>'
AllowCustomText="true" AutoPostBack="true" DataTextField="service_name" DataValueField="id" 
>

1 回答

  • 0

    您必须自定义以下代码以符合您的要求 . 我在这里给你一个方法 .

    在我的情况下,我需要将组合框中的名称列表添加到网格中 .

    名称存储在emp表中 . 网格的数据存储在联系人表中 . 当我选择名称并点击添加时,会将emp名称添加为联系人 .

    以下是我的aspx .

    <telerik:RadComboBox runat="server" ID="comboNames" SelectMethod="getContactName"
     DataTextField="name" DataValueField="id"
     EnableCheckAllItemsCheckBox="true" CheckedItemsTexts="FitInInput" CheckBoxes="true" Width="100%">
    </telerik:RadComboBox>
    
    <telerik:RadButton runat="server" ID="btnAdd" OnClick="btnAdd_Click" Text="Add"></telerik:RadButton>
    
    <telerik:RadGrid runat="server" ID="gridContacts" Width="100%" AutoGenerateColumns="false"
        AllowSorting="true" AllowMultiRowSelection="false" AllowPaging="true" PageSize="20"
        GridLines="None" ShowGroupPanel="true">
        <PagerStyle Mode="NextPrevNumericAndAdvanced" />
        <MasterTableView Width="100%" DataKeyNames="cont_id" AllowMultiColumnSorting="true"
            CommandItemDisplay="Top"
            GroupLoadMode="Server" NoMasterRecordsText="No persons saved">      
            <CommandItemSettings AddNewRecordText="Add New"
                SaveChangesText="Save Contacts"
                ShowSaveChangesButton="false"
                CancelChangesText="Cancel Changes"
                ShowCancelChangesButton="false"
                ShowExportToCsvButton="false" ShowExportToExcelButton="false" ShowExportToPdfButton="false" ShowExportToWordButton="false" />       
            <Columns>           
                <telerik:GridTemplateColumn HeaderText="Name" SortExpression="name" UniqueName="name">
                    <ItemTemplate>
                        <asp:Label runat="server" ID="lblContName" Text='<%#  Eval("name") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadTextBox runat="server" ID="txtContName"></telerik:RadTextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
    </telerik:RadGrid>
    

    在C#代码中执行此操作 .

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            foreach (RadComboBoxItem item in comboNames.CheckedItems)
            {
                int contID = Convert.ToInt32(item.Value);
                tbl_contacts cont = db.tbl_contacts
                                        .Where(c => c.cont_id == contID)
                                        .FirstOrDefault();
                cont.cont = true;
                db.SaveChanges();
            }
    
            gridContacts.Rebind();
        }
        catch (Exception ex)
        {
            //Add your exception logic here
        }
    }
    

    为您的网格添加需求数据源 .

    protected void gridContacts_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
            {
                gridContacts.DataSource = db.tbl_contacts
                                            .Where(c => c.is_cont == true)
                                            .ToList();
            }
    

相关问题