0

編集:現在動作中です。以下を参照してください。

こんにちは、みんな、

私の ASP.Net 3.5 アプリに少し問題があります。クリックされたページ番号をプログラムに取得させようとしています。ASP.Net の組み込みの AllowPaging="True" 関数を使用しています。コードなしでは決して同じではないので、次のとおりです。

ASP.Net:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="Vertical" Width="960px" AllowSorting="True" 
            EnableSortingAndPagingCallbacks="True" AllowPaging="True" PageSize="25" >
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#999999" />
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        </asp:GridView>

C#:

var fillTable = from ft in db.IncidentDatas
                                where ft.pUserID == Convert.ToInt32(ClientList.SelectedValue.ToString())
                                select new
                                {
                                    Reference = ft.pRef.ToString(),
                                    Date = ft.pIncidentDateTime.Value.Date.ToShortDateString(),
                                    Time = ft.pIncidentDateTime.Value.TimeOfDay,
                                    Premesis = ft.pPremises.ToString(),
                                    Latitude = ft.pLat.ToString(),
                                    Longitude = ft.pLong.ToString()
                                };
                if (fillTable.Count() > 0)
                {
                    GridView1.DataSource = fillTable;
                    GridView1.DataBind();
                    var IncidentDetails = fillTable.ToList();
                    for (int i = 0; i < IncidentDetails.Count(); i++)
                    {
                        int pageno = GridView1.PageIndex;
                        int pagenostart = pageno * 25;
                        if (i >= pagenostart && i < (pagenostart + 25))
                        {
                            //Processing
                        }
                    }
                 }

GridView1.PageIndex が常に = 0 である理由は何ですか? 問題は、処理がグリッド ビューに対して正しく機能することです.... 常に正しいページング ページに移動しますが、番号を取得しようとすると常に 0 になります。ヘルプ!

4

3 に答える 3

0

うーん...これは気にしないでください。GridViewを削除して別のグリッドビューを追加し、PageIndexChangingのイベントを追加してから、e.NewPageIndexを使用しました。何らかの理由で、他のGridViewでそのイベントを使用することはできません。変。

于 2010-05-26T12:47:02.537 に答える
0

ポストバックを確認してください。おそらく、ページが読み込まれるたびにグリッドを新しく読み込んでいると思われます。そのため、ページングするときに、グリッドにデータを入力し、ページ インデックスをリセットするコードを呼び出している可能性があります。ポストバックでない場合にのみロードする必要があります。ポストバックの場合は、ViewState などのストレージ領域からデータと適切な pageIndex をフェッチする必要があります。

于 2010-05-26T12:49:40.673 に答える
0

GridView1.PageIndex電話する前にアクセスしてみましたGridView1.DataBindか?新しいデータ ソースを割り当ててグリッドにバインドすると、リセットされる場合があります。

于 2010-05-26T11:09:03.610 に答える