1

私はGridViewを持っています、

<asp:GridView ID="managerList" runat="server" DataSourceID="SqlDataSource2">

背後のコードでは、

protected void Page_Load(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
}

ページをロードすると、正常に機能し、ページングも正常に機能します。

次に、検索ボタンをクリックしてリストのサブセットを取得します。

protected void btnSearch_Click(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager where age > 30";
    managerList.DataBind();
}

正常に動作します。リストのサブセットを教えてください。

ただし、「次のページ」をクリックすると、リスト全体、ページ#2が表示されます。ポストバックを送信し、元のselectコマンドをバインドするためです。しかし、「次のページ」をクリックしたときにリストのサブセットを表示するにはどうすればよいですか?

ありがとうございました!

更新: コードをこれに変更した場合:

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
  }
}

「次のページ」をクリックすると、空のリストが表示されます。

IsPostBackを追加したくなるかもしれませんが、これは機能しません。

4

5 に答える 5

2

PageIndexChangingイベントにNewPageIndexコードを追加します。

managerList.PageIndex = e.NewPageIndex;
bindgrid();
于 2011-06-30T16:32:01.920 に答える
1

以下はあなたを助けるかもしれません

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
    {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
    }

}
于 2011-06-30T15:45:22.937 に答える
1

!IsPostBack()あなたはpage_loadイベントの下にあなたのコードを置く必要があります。お気に入り...

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
  }
}

理由:PageIndexChanging [次へ]ボタンを押すたびに、Gridviewのイベントハンドラーの前にページ読み込みイベントが呼び出されます。

于 2011-06-30T15:45:50.833 に答える
0

Page_Loadは、ポストバックを含め、ページが読み込まれるたびに発生するため、selectステートメントがリセットされます。選択ステートメントを保持するために、ビューステート値を設定してみてください。

于 2011-06-30T15:44:02.340 に答える
0

最新のSQLクエリをグローバル静的文字列に格納してから、次のコードを使用します。

static String previousSQL_Query;

protected void Page_Load(object sender, EventArgs e)
{
  if(IsPostBack)
  {
    SqlDataSource2.SelectCommand = previousSQL_Query;
  }
  else
  {
       SqlDataSource2.SelectCommand = "select * from manager";
       managerList.AllowPaging = true;
  }
}

protected void btnSearch_Click(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager where age > 30";
    previousSQL_Query = SqlDataSource2.SelectCommand;
    managerList.DataBind();
}
于 2014-06-06T15:36:00.337 に答える