2015-10-12 38 views
0

我有一个文本框和一个搜索按钮以及一个已经通过OnNeedDataSource事件绑定数据的RadGrid。当我点击搜索按钮,它会得到新的数据,我重新绑定()该数据上的搜索按钮点击事件。Telerik RadGrid分页时出现错误的数据

但是,当我改变网格上的页码时,数据源不是我已经重新绑定()的数据源。

+0

也许张贴一些代码,将有助于我们找出您的问题... – Nic

回答

0

这是我的示例代码..我在更改页面时没有发现任何问题。 由于DataSource的不同,您可能需要将Rebind更改为DataBindRebind将最有可能收回以前DataSource

的.aspx

<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager> 

<asp:TextBox ID="txt" runat="server" Text=""></asp:TextBox> &nbsp; 
<telerik:RadButton ID="btn" runat="server" Text="Search" OnClick="btn_Click"> 
</telerik:RadButton> 

<br /><br /> 
<telerik:RadGrid ID="rg" runat="server" PageSize="5" 
    OnNeedDataSource="rg_NeedDataSource" AllowPaging="true" 
    AutoGenerateColumns="false"> 
    <MasterTableView> 
     <Columns> 
      <telerik:GridBoundColumn DataField="Text" HeaderText="Sample"> 
      </telerik:GridBoundColumn> 
     </Columns> 
    </MasterTableView> 
    <PagerStyle Mode="NumericPages" /> 
</telerik:RadGrid> 

的.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    // Variable 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("Text"); 

    for (int i = 0; i < 20; i++) 
     dt.Rows.Add("DataSource before search First Item No." + (i + 1)); 

    // Save to Viewstate 
    ViewState["Data"] = dt; 

    // Bind 
    rg.DataSource = dt; 
    rg.DataBind(); 
} 

protected void rg_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    rg.DataSource = ViewState["Data"] as DataTable; 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    // Variable 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("Text"); 

    // Loop 
    for (int i = 0; i < 20; i++) 
     dt.Rows.Add("Datasource Search button item no " + (i + 1)); 

    // Viewstate the new Datasource 
    ViewState["Data"] = dt; 

    // Reset Page 
    rg.CurrentPageIndex = 0; 

    // Bind 
    rg.DataSource = dt; 
    rg.DataBind(); 
}