Reputation: 1
I have a textbox and a search button and a RadGrid which was already bound data to by OnNeedDataSource event. When I click search button, it will get the new data and I Rebind() that data on search button click event.
But when I change page number on the grid, the datasource was not the datasource I've already Rebind().
Upvotes: 0
Views: 259
Reputation: 1024
Here is my sample code.. I don't find any problem on changing page.
You might want to change Rebind
to DataBind
due to different DataSource
.
Rebind
most probably will take back the previous DataSource
.aspx
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<asp:TextBox ID="txt" runat="server" Text=""></asp:TextBox>
<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();
}
Upvotes: 0