5

この質問はよくあるようですが、私はこのanswerを既に通過しました。SqlDataAdapterを使用してSqlDataReaderソースをページングする

残念ながら、私のページは依然としてページングされていません。 C#でのコードの外観は次のとおりです。

SqlCommand command = new SqlCommand("(SELECT ......", Connection); 
SqlDataAdapter myAdapter = new SqlDataAdapter(command); 
DataTable dt = new DataTable(); 
myAdapter.Fill(dt); 

command.Connection = connection; 
command.Connection.Open(); 

GridView1.DataSource = dt; 
GridView1.DataBind(); 
GridView1.AllowPaging = true; 
GridView1.PageSize = 15; 

command.Connection.Close(); 
command.Connection.Dispose(); 

残念ながら、私がこの操作を行うと、私のページングが表示されません。私は何か間違っているのですか?

おかげ

+1

あなたは確かに選択して15以上のレコードを取得していますか?また、Databind()メソッドが呼び出される前に、ページング関連のすべてのプロパティを設定します。 –

+0

うわー、それは簡単だった。私はdatabind()の前に設定しなければなりませんでした。ありがとう! – Kevin

+0

ああ、OnPageIndexChangingとOnPageIndexChangedの違いは何ですか? – Kevin

答えて

6

セットのページング関連のプロパティのすべてDatabind()メソッドが呼び出されます。 カスタムページングを使用する場合は、GridView1_PageIndexChangingイベントを処理する必要があります。あなたは現在、pageIndexパラメータを変更する必要があり、このような再結合し、あなたのGridView

void bindGridview() 
{ 
    SqlCommand command = new SqlCommand("(SELECT ......", Connection); 
    SqlDataAdapter myAdapter = new SqlDataAdapter(command); 
    DataTable dt = new DataTable(); 
    myAdapter.Fill(dt); 

    command.Connection = connection; 
    command.Connection.Open(); 
    GridView1.AllowPaging = true; 
    GridView1.PageSize = 15; 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 


    command.Connection.Close(); 
    command.Connection.Dispose(); 
} 

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    bindGridview(); 
} 

あなたもPage_LoadにGridViewコントロールをバインドしている場合は、このようにそれを実行します。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
     bindGridview(); 
} 
+0

私の最初のdatabind()はpageLoad上にありました。しかし、GridView1_PageIndexChangingにif(!IsPostBack)を追加すると、gridviewの次のページに移動するときにクリックすると、何も起こりません。もう一度クリックすると、次のページに移動します。 if文がなければ、最初のクリックでそれを行います。 – Kevin

+0

PageIndexChangingに!IsPostBackを追加しないでください。答えはPage_Loadです。私は混乱を避けるためにイベントで更新します:P –

+0

Ah大丈夫です!好奇心から、これは何をするのですか? pageload!IsPostBackなしで動作するように見えるので? – Kevin

3

あなたが追加する必要がありますpagingを有効にするイベントはGridViewです。

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    bindGridview(); 
} 
関連する問題