私はGridViewでページングに奇妙な経験をしています。 私はタイマーとupdateprogressを付け加えたupdatepanelを使って、griviewにデータを読み込むのをやめようとしています。 基本的に私がしようとしているのは、グリッドのあるページが有効になるとタイマーを開始するときです。 timer_tickイベントでは、データを取得して変数にロードします。その後、データバインドを強制するためにgridview上でdatabindを呼び出します。ここで私はそれを行うLinqDataSourceを使用しています。最後に私はupdatepanelのUpdateメソッドを使ってUIを更新しています。GridViewのページングは常に最初のページを表示します
グリッドビューの並べ替えやフィルタリングでは問題なく動作しますが、ページングするときにはページングテンプレートが常に最初のページ(アクティブなものとして表示)にとどまるはずです。どんなアイディアですか?
<asp:LinqDataSource runat="server" ID="OrdersDataSource"
OnSelecting="OrdersDataSource_Selecting" AutoPage="false" />
<asp:GridView runat="server" ID="OrdersGridView" AutoGenerateColumns="false"
DataSourceID="OrdersDataSource"
AllowPaging="true" AllowSorting="true" PageSize="3">
<Columns>
...
<asp:Timer runat="server" ID="LazyLoadUpdatePanel"
Enabled="false"
Interval="1" OnTick="LazyLoadUpdatePanel_Tick" />
...
protected void LazyLoadUpdatePanel_Tick(object sender, EventArgs e)
{
if (datasource == null)
{
System.Threading.Thread.Sleep(2000);
datasource = customer.Orders;
OrdersGridView.DataBind();
OrdersUpdatePanel.Update();
}
LazyLoadUpdatePanel.Enabled = false;
}
ところで、私は、データソースにし、それなしautopagingで試してみました:ここに私のコードの一部です。それはトリックをしませんでした。私はページングがうまくいくと言っていたので、UIは私の想定していたものを表示していません。
私は実際にそれを理解しました。それは問題を引き起こしたgridview上の小さなviewstateサッカーでした。それをfalseに設定すると動作します。 –