繁体   English   中英

RadGrid通过位于网格外部的RadComboBox进行过滤

[英]RadGrid filtering by the RadComboBox which is outside the 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();
}

这是我的带有combox设置的ASPX代码:

<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" 
>

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

就我而言,我需要将名称列表从组合框中添加到网格中。

名称存储在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();
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM