グリッドビューを含む modalpopypextender があり、これを行うボタンクリックでそれを設定したい:
protected void btnViewRecipients_Click(object sender, EventArgs e)
{
ModalPopupExtender1.Show();
BindData();
}
これは簡単です。BindData はこれを行います。
protected void BindData()
{
try
{
SqlCommand sqlCommand = new SqlCommand();
string connectionString = "Data Source=SERVER\\DB1;Initial Catalog=Survey;User ID=abcde;Password=12345;";
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
sqlCommand = sqlConnection.CreateCommand();
sqlCommand.CommandText = "Select * From [Survey].[dbo].[data]";
SqlDataAdapter sda = new SqlDataAdapter(sqlCommand.CommandText, connectionString);
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
//Create a DataTable to hold the query results.
//Fill the DataTable.
sda.Fill(dTable);
//Set the DataGridView DataSource.
gvRecords.DataSource = dTable;
gvRecords.DataBind();
sqlConnection.Close();
}
}
catch (SqlException ex)
{
//Console.WriteLine(ex.StackTrace);
}
}
これですべてうまくいき、グリッドにデータが表示されるようになりました。次に、自動ページングをオンにして、gvRecords_PageIndexChanged 呼び出しを作成しました。EnableSortingAndPagingCallbacks もオンにしました。
protected void gvRecords_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvRecords.PageIndex = e.NewPageIndex;
gvRecords.DataSource = dTable;
gvRecords.DataBind();
}
これは非常に奇妙に機能します。ページ番号をクリックすると、テーブルが空白になり、以前に定義した EmptyDataText が表示されることに気付きました。しかし、ModalPopupExtender を閉じて再度開くと (ボタンをもう一度クリックすると)、正しいページとデータが表示されます。たとえば、ページ 3 をクリックして空白のテーブルを取得すると、MPE を再度開くと、ページ 3 の内容がグリッドビューに表示されます。それはどこかに保存されているビューステートだと思いますが、グリッドビューがすぐにページを表示しないのはなぜですか?
私は本当にこれに行き詰まっており、何が欠けているのか理解できていません!
何百万回も助けてくれてありがとう、私はこれをオンラインで検索して検索しましたが、おそらくそれはとても些細で明白なので、誰も尋ねる必要はありません!?!