PagedDataSourceを使用しているDataListコントロールがあり、ページが正常に読み込まれ、データが表示されます。 また、ページングのページ番号を提供する別のDataListもあります。最初のポストバック後にASP.NET 2.0ポストバックが機能しなくなる
ユーザーがポストバックを行い、PagedDataSource CurrentPageプロパティをインクリメントすると、ページ番号のいずれかをクリックすると、
これは最初にクリックすると正常に機能します。ページは正しいページにリロードされます。しかし、もう一度任意のページをクリックしても、ポストバックは発生しません。私はそれをクリックしたときとは違って、サーバサイドのコードセットがヒットすることはありません。
私は最初のポストバックが何とかポストバックをねじっていると思いますが、私はなぜそれがわかりません。
これに関するご意見はありますか?あなたは、ページの読み込みにIsPostBackプロパティをチェック場合はこちらのページの負荷と結合コードがIsPostBackプロパティSCOPの外に結合あなたのリストを取得..
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Trace.Write("Before BindItemsList() " + DateTime.Now.ToLongTimeString());
this.BindItemsList();
Trace.Write("After BindItemsList() " + DateTime.Now.ToLongTimeString());
}
}
private void BindItemsList()
{
DataTable dataTable = new DataTable();
if (Cache["dtItems"] != null)
dataTable = (DataTable)Cache["dtItems"];
else
dataTable = this.GetDataTable();
_PageDataSource.DataSource = dataTable.DefaultView;
_PageDataSource.AllowPaging = true;
_PageDataSource.PageSize = 9;
_PageDataSource.CurrentPageIndex = CurrentPage;
ViewState["TotalPages"] = _PageDataSource.PageCount;
this.lblPageInfo.Text = "Page " + (CurrentPage + 1) + " of " + _PageDataSource.PageCount;
this.ibtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
this.ibtnNext.Enabled = !_PageDataSource.IsLastPage;
this.ibtnFirst.Enabled = !_PageDataSource.IsFirstPage;
this.ibtnLast.Enabled = !_PageDataSource.IsLastPage;
this.dlProducts.DataSource = _PageDataSource;
this.dlProducts.DataBind();
this.doPaging();
}
protected void ibtnFirst_Click(object sender, ImageClickEventArgs e)
{
CurrentPage = 0;
this.BindItemsList();
}
protected void ibtnPrevious_Click(object sender, ImageClickEventArgs e)
{
CurrentPage -= 1;
this.BindItemsList();
}
protected void ibtnNext_Click(object sender, ImageClickEventArgs e)
{
CurrentPage += 1;
this.BindItemsList();
}
protected void ibtnLast_Click(object sender, ImageClickEventArgs e)
{
CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
this.BindItemsList();
}
protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName.Equals("Paging"))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
this.BindItemsList();
}
}
/// <summary>
/// Binding Paging List
/// </summary>
private void doPaging()
{
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");
fistIndex = CurrentPage - 5;
if (CurrentPage > 5)
{
lastIndex = CurrentPage + 4;
}
else
{
lastIndex = 9;
}
if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
{
lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
fistIndex = lastIndex - 9;
}
if (fistIndex < 0)
{
fistIndex = 0;
}
for (int i = fistIndex; i < lastIndex; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 1;
dt.Rows.Add(dr);
}
this.dlPaging.DataSource = dt;
this.dlPaging.DataBind();
this.dlBottomPaging.DataSource = dt;
this.dlBottomPaging.DataBind();
}
「doPaging」メソッドコードも含めることができます。 – patmortech
私はそれを加えました。そのコードは単にページ番号をバインドします。しかし、それは私がページしようとしているものです。 –