0

ページングを許可するように Gridview を設定しました。

        try
        {

            SqlConnection sqlConnection = new SqlConnection("Data Source=JACKCONNECTION\\SQLEXPRESS;Initial Catalog=testbase;Integrated Security=True");
            SqlCommand sqlCommand = new SqlCommand(allitemsselectedsqlsrc, sqlConnection);
            sqlCommand.CommandType = System.Data.CommandType.Text;
            sqlConnection.Open();

            SqlDataAdapter da = new SqlDataAdapter(sqlCommand);
            DataSet ds = new DataSet();
            da.Fill(ds);

            ArrayList ArrList = new ArrayList();

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                ArrList.Add(dr);
            }
            GridViewMass.DataSource = ds;
            GridViewMass.DataBind();


        }
        catch (Exception err)
        {
            LabelSelErr.Text = err.Message;
        }

PageIndexChangingまた、次のように GridViewのアクションがあります。

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

    }

最後に、Gridview を含む aspx ファイルは次のとおりです。

<asp:GridView ID="GridViewMass" runat="server" AllowPaging="True" 
                            AllowSorting="True" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" 
                            BorderWidth="1px" CellPadding="4" EnableSortingAndPagingCallbacks="True" 
                            ForeColor="Black" GridLines="Horizontal" 
                            onpageindexchanging="gvm_PageIndexChanging">
                            <FooterStyle BackColor="#CCCC99" ForeColor="Black" />
                            <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
                            <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
                            <SortedAscendingCellStyle BackColor="#F7F7F7" />
                            <SortedAscendingHeaderStyle BackColor="#4B4B4B" />
                            <SortedDescendingCellStyle BackColor="#E5E5E5" />
                            <SortedDescendingHeaderStyle BackColor="#242121" />
                        </asp:GridView>

奇妙なことに、ページをクリックすると (2 ページ目、3 ページ目、またはクリックできるページは何でも)、GridviewGridViewMassが消えてしまいます。

私は間違ってコーディングしましたか?以前は、次のエラー メッセージが表示されて解決しましたが、現在は、これ以上続行できない状況に陥っています。

  1. System.dll で、タイプ 'System.InvalidOperationException' の初回例外が発生しました
  2. このコマンドに関連付けられた開いている datareader が既に存在し、最初に閉じる必要があります。
  3. データ ソースは、サーバー側のデータ ページングをサポートしていません。
  4. GridView 'GridView' は、処理されなかったイベント PageIndexChanging を発生させました。

GridView を元に戻すのに役立つヘルプを感謝します。

4

1 に答える 1

1

PageIndexChangingイベントで欠けているものは 1 つだけです

protected void gvm_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    // Here you missing to give datasource to your Grid...
    GridViewMass.PageIndex = e.NewPageIndex;
    GridViewMass.DataBind();

}

Try/catch ブロックでは、そのデータセットを次の場所に保存する必要がありますViewState

    try
    {

        SqlConnection sqlConnection = new SqlConnection("Data Source=JACKCONNECTION\\SQLEXPRESS;Initial Catalog=testbase;Integrated Security=True");
        SqlCommand sqlCommand = new SqlCommand(allitemsselectedsqlsrc, sqlConnection);
        sqlCommand.CommandType = System.Data.CommandType.Text;
        sqlConnection.Open();

        SqlDataAdapter da = new SqlDataAdapter(sqlCommand);
        DataSet ds = new DataSet();
        da.Fill(ds);

        ArrayList ArrList = new ArrayList();

        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            ArrList.Add(dr);
        }
        ViewState["DataSource"] = ds;
        GridViewMass.DataSource = ds;
        GridViewMass.DataBind();


    }
    catch (Exception err)
    {
        LabelSelErr.Text = err.Message;
    }

今、pageIndexChangeingこのようなあなたの変化に

protected void gvm_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    // Here you missing to give datasource to your Grid...
    GridViewMass.DataSource = (DataSet)(ViewState["DataSource"]);
    GridViewMass.PageIndex = e.NewPageIndex;
    GridViewMass.DataBind();

}

EnableSortingAndPagingCallbacksに設定することも忘れないでくださいFalse

于 2012-09-25T07:53:36.103 に答える