3

グリッドビューを含む 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 の内容がグリッドビューに表示されます。それはどこかに保存されているビューステートだと思いますが、グリッドビューがすぐにページを表示しないのはなぜですか?

私は本当にこれに行き詰まっており、何が欠けているのか理解できていません!

何百万回も助けてくれてありがとう、私はこれをオンラインで検索して検索しましたが、おそらくそれはとても些細で明白なので、誰も尋ねる必要はありません!?!

4

2 に答える 2

0

ようやく機能しました。PopupControlID を、内部パネルではなく updatepanel の ID である upModal に設定する必要がありました。targetcontrolID は、MPE を操作する際に多くの人が見つけたように、非表示のボタンを指す必要もありました...

とにかく、ここに行きます:

    <asp:Button ID="hiddenButton" runat="server" Text="" style="display:none;" />
    <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" Enabled="True" TargetControlID="hiddenButton" PopupControlID="upModal" BehaviorID="modalbehavior" BackgroundCssClass="modalBackground"  OnCancelScript="cancelClick();" CancelControlID="closePopup">
    </ajaxToolkit:ModalPopupExtender>

    <asp:UpdatePanel runat="server" ID="upModal" UpdateMode="Conditional">
        <ContentTemplate>

            <asp:Panel id="pnlPopup" runat="server" class="ModalPanel" >

                <table cellpadding="5" cellspacing="5" class="topBanner" style="width:100%;">
                    <tr>
                        <td width="50">
                            <asp:LinkButton ID="closePopup" runat="server" onclick="LinkButton1_Click" CssClass="ClosePopupCls">Close 
                            [x]</asp:LinkButton>
                        </td>
                        <td align="center">
                            <asp:Label ID="lbl" runat="server" Text="Status"></asp:Label>
                        </td>
                        <td width="25">
                        </td>
                    </tr>
                    <tr>
                        <td colspan="3">
                            <asp:GridView ID="gvRecords" runat="server" AllowPaging="True" 
                                BackColor="White" EmptyDataText="No Record Found" 
                                EnableSortingAndPagingCallbacks="True" ForeColor="GrayText" Height="600" 
                                onpageindexchanging="gvRecords_PageIndexChanging" Width="800">
                            </asp:GridView>
                        </td>
                    </tr>
                </table>
            </asp:Panel>

        </ContentTemplate>
    </asp:UpdatePanel>
于 2013-08-17T20:46:57.353 に答える