12

私が作成しました:

  • 1つのマスターページと1つのコンテンツページは詳細と呼ばれます。
  • ボタンクリックイベントで、グリッドビューにデータを表示します。
  • グリッドビューでは、列は自動生成されます。
  • グリッドビューで11列を表示したかったのですが、ページサイズを超えています。

これのために何をしますか?

データベース接続コード用のSQLヘルパーファイルを作成し、接続にsqldatasourceを使用せずに、そのメソッドを呼び出しました。

ページングを実行しようとすると、エラーが発生します:

GridView'GridView1'は、処理されなかったイベントPageIndexChangingを発生させました。

4

5 に答える 5

24

PageIndexChangingイベントを処理するメソッドをコードビハインドで宣言する必要があります。

これに似たもの:

protected void GridView1_PageIndexChanging (object sender, GridViewPageEventArgs  e)
{
    GridView1.PageIndex = e.NewPageIndex;
    bindGridView(); //bindgridview will get the data source and bind it again
}

private void bindGridView()
{
     GridView1.DataSource=getData();
     GridView1.DataBind();
}

サンプルコードの提供:

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        bindGridView(); //bindgridview will get the data source and bind it again
    }

    protected void Page_Load(object sender , EventArgs e)
    {
        if(!IsPostBack)
         bindGridView();

    }
    //this is some sample data 
    private void bindGridView()
    {
        DataTable t = new DataTable();
        t.Columns.Add("Col1");
        t.Columns.Add("Col2");
        DataRow r = null;
        for (int i = 0; i < 25; i++)
        {
            r = t.NewRow();
            r.ItemArray = new object[] { "Val" + i, " Another " + i };
            t.Rows.Add(r);
        }
        GridView1.DataSource = t;
        GridView1.DataBind();
    }

そしてこれはマークアップです:

<asp:GridView OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="true" PageSize="10" ID="GridView1" runat="server" AutoGenerateColumns="true">

これを生成します:

ここに画像の説明を入力してください

于 2011-10-30T15:24:48.730 に答える
2

ページングの場合、これにはOnPageIndexChangingを使用できます。

例えば

GridViewでOnPageIndexChanging="gvdetails_PageIndexChanging"を使用する必要があります...

以下のコードをコードビハインドのイベントに書き込む必要があります

protected void gvdetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvdetails.PageIndex = e.NewPageIndex;
    BindData();
}

詳細については、以下のリンクを確認してください。私の記事でページインデックスの変更を使用しています...

ここではPageIndexChangeを使用します

これがお役に立てば幸いです...他の人と共有してください...ありがとう!

于 2013-06-27T07:32:20.970 に答える
1

これが最終的な答えです。

Imports System.Collections.Generic ' library

Protected Sub grdEmployees_PageIndexChanging1(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdEmployees.PageIndexChanging
    grdEmployees.PageIndex = e.NewPageIndex
    LoadEmployeeList() 'FUNCTION FOR DATASET
    grdEmployees.DataBind()

End Sub
于 2012-07-31T17:44:50.500 に答える
1

これをコードに追加するだけです:

protected void GridViewTrsEmail_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridViewTrsEmail.PageIndex = e.NewPageIndex;
    GridViewTrsEmail.DataBind();


}
于 2017-10-27T08:47:00.840 に答える
0

これを修正するには、データソースとデータキーを詳しく調べる必要がありました。SQL Serverから返される一連のレコードがあり、私が行っていたのはそれらをPOCOにバインドすることです。このクラスには、整数型のいくつかのパブリックプロパティがありました。これらの整数は、グリッド上の私のデータキーでした。キャストの問題を回避するために、代わりにタイプを文字列に置き換えました。

于 2012-02-22T21:10:55.390 に答える