簡體   English   中英

C#Telerik Grid數據綁定未重新加載

[英]C# Telerik Grid data binding not reloading

我想將數據動態綁定到telerik網格中。 最初,我使用下面的代碼。

protected void radGridItemList_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            var gridItemList = sender as RadGrid;
            var repoItemMaster = CreateIItemMasterRepository();
            var ItemList = repoItemMaster.GetAll();
            gridItemList.DataSource = ItemList;
}

現在,我想重新加載帶有過濾的ItemNumbers的gridItemList(例如,從ItemMaster中選擇ItemNumber,其中ItemNumber喜歡'a%'),然后將新的數據源再次綁定到網格。

我做了這樣的事情,但是沒有用。

private void LoadItemListByItemNumber(string ItemNumber)
        {
            var gridItemList = radcmbItemNumber.Items[0].FindControl("radGridItemList") as RadGrid;
            string whereCondition = "a.ItemNumber LIKE '"+ ItemNumber + "%'";

            var repoItemMaster = CreateIItemMasterRepository();        
            List<ItemMaster> itemList = repoItemMaster.FindbyItemNumber(ItemNumber, whereCondition);
            gridItemList.DataSource = itemList;
        }       

有什么建議么?

使用高級數據綁定( RadGrid1_OnNeedDataSource() )時,可以使用內置的RadGrid功能過濾由自定義對象組成的數據源。

為此,只需在AllowFilteringByColumn="True"內通過設置AllowFilteringByColumn="True"啟用過濾, AllowFilteringByColumn="True"就會自動過濾您的數據源。

您還可以通過設置當前的Filter Expression並在RadGrid上調用rebind()來從外部進行此操作。

ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Button ID="Button1" runat="server" Text="Filter by 1" OnClick="Button1_Click" />
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" AllowFilteringByColumn="True" CellSpacing="-1" GridLines="Both" EnableLinqExpressions="false" AllowPaging="True"></telerik:RadGrid>

C#:

 // <summary>
// Demo cusotm object
// </summary>
public class MyObject
{
    public int ItemNumber { get; set; }
    public string ItemName { get; set; }
}

protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
    //  Bind RadGrid         
    RadGrid1.DataSource = this.GetData();
}

// <summary>
// Returns a Demo custom object DataSource
// </summary>
// <returns></returns>
private List<MyObject> GetData()
{
    List<MyObject> data = new List<MyObject>();
    for (int i = 0; (i <= 100); i++)
    {
        var item = new MyObject();
        item.ItemNumber = i;
        item.ItemName = ("Item # " + i);
        data.Add(item);
    }
    return data;
}

protected void Button1_Click(object sender, EventArgs e)
{
    RadGrid1.MasterTableView.FilterExpression = "([ItemName] LIKE \'%1%\')";
    RadGrid1.Rebind();
}

一些鏈接請看:

先進的數據綁定

先進的數據綁定技巧

手動過濾

.aspx

<div class="col-lg-8 qb-col">
                                                    <telerik:RadComboBox ID="radcmbItemNumber" runat="server"
                                                        MarkFirstMatch="True" 
                                                        AllowCustomText="true"
                                                        OnClientDropDownOpening="radcmbItemNumberOnClientDropDownOpening"                                                      
                                                        OnClientKeyPressing="radcmbItemNumberOnKeyPress"                                                                                                                
                                                        OnTextChanged="radcmbItemNumber_TextChanged"                                                      
                                                        Width="95%" 
                                                        CssClass="qb-input-combo"
                                                        ExpandAnimation-Type="None">
                                                        <ItemTemplate>
                                                            <telerik:RadGrid ID="radGridItemList" runat="server" CssClass="GridStyle1"
                                                                AutoGenerateColumns="false" AllowPaging="true"
                                                                AllowSorting="true" AllowFilteringByColumn="true"
                                                                OnNeedDataSource="radGridItemList_NeedDataSource"
                                                                EnableLinqExpressions="false">
                                                                <GroupingSettings CaseSensitive="false" />
                                                                <PagerStyle Mode="NextPrevAndNumeric" />
                                                                <MasterTableView DataKeyNames="ItemNumber" ClientDataKeyNames="ItemNumber">
                                                                    <Columns>
                                                                        <telerik:GridBoundColumn UniqueName="ItemNumber" DataField="ItemNumber"
                                                                            HeaderText="Item Number" AutoPostBackOnFilter="true"
                                                                            FilterControlWidth="100px">
                                                                            <HeaderStyle Width="150px" />
                                                                        </telerik:GridBoundColumn>
                                                                        <telerik:GridBoundColumn UniqueName="RevisionNumber" DataField="RevisionNumber"
                                                                            HeaderText="Revision Number" AutoPostBackOnFilter="true"
                                                                            FilterControlWidth="100px">
                                                                            <HeaderStyle Width="150px" />
                                                                        </telerik:GridBoundColumn>
                                                                        <telerik:GridBoundColumn UniqueName="Description" DataField="Description"
                                                                            HeaderText="Description" AutoPostBackOnFilter="true"
                                                                            FilterControlWidth="100px">
                                                                            <HeaderStyle Width="150px" />
                                                                        </telerik:GridBoundColumn>

                                                                    </Columns>
                                                                </MasterTableView>
                                                                <ClientSettings>
                                                                    <ClientEvents OnRowClick="radGridItemListOnRowClicked" />
                                                                    <Scrolling AllowScroll="true" UseStaticHeaders="true" />
                                                                </ClientSettings>
                                                            </telerik:RadGrid>
                                                        </ItemTemplate>
                                                        <Items>
                                                            <telerik:RadComboBoxItem runat="server" Text=" "></telerik:RadComboBoxItem>
                                                        </Items>
                                                    </telerik:RadComboBox>
                                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
                                                                                        ControlToValidate="radcmbItemNumber" ErrorMessage="!"
                                                                                        ForeColor="Red" 
                                                                                        SetFocusOnError="true" />
                                                </div>

我使用了一個組合,當它單擊時,我需要將搜索結果加載到網格中,以獲取組合框中鍵入的內容。 這是我的.cs

 protected void radcmbItemNumber_TextChanged(object sender, EventArgs e)
        {
            string textToSearch = radcmbItemNumber.Text.ToString();
            var gridItemList = radcmbItemNumber.Items[0].FindControl("radGridItemList") as RadGrid;
            if (!string.IsNullOrEmpty(textToSearch))
                gridItemList.MasterTableView.FilterExpression = "([ItemNumber] LIKE \'%" + textToSearch + "%\')";

            gridItemList.MasterTableView.Rebind();
}

因此,此文本更改效果很好,但在我進入第二頁之前,不會重新加載新的搜索結果。 希望這有道理。讓我知道您是否需要更多信息。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM