- - PR -
DataGridのページング
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-15 11:21
皆様はじめまして!今までよく参考にさせて頂いているのですが、
今回どうしてもよくわからない事があり、質問させてください。 今まで散々出ているページングについてなんですが、過去ログを参照しながら やっているのですが、上手く動作しません。 ページングでリンクを押すと次のグリッドが表示されないのです。 理由としてあがっていたのはデータセットがちゃんと設定されていないと そういうことがあるというのを読みました。 しかし、自分的にはちゃんと設定していると思うのです。 サンプルでコードをのせますので、おかしい部分があったら指摘をお願いします。 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dim sql as String If Not IsPostBack Then datagrid.CurrentPageIndex = 0 End If sql = "" sql = sql & " SELECT TEST ASテスト " sql = sql & " FROM TEST " subDataBind(sql, "TEST") End Sub Private Sub subDataBind(ByValr sql As String, ByVal strMember As String) Dim con As OracleConnection = New OracleConnection Dim cmd As New OracleCommand Dim rd As OracleDataReader Dim ds As New DataSet con.ConnectionString = "User Id=test; Password=test; Data Source=test; cmd.Connection = con cmd.CommandText = strSql Dim da As New OracleDataAdapter da.SelectCommand = cmd da.Fill(ds, strMember) datagrid.DataSource = ds datagrid.DataMember = strMember datagrid.DataBind() da.Dispose() con.Close() End Sub Private Sub datagrid_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DG_HINBAN.PageIndexChanged Dim sql As String datagrid.CurrentPageIndex = e.NewPageIndex sql = "" sql = sql & " SELECT TEST AS テスト " strSql = strSql & " FROM TEST " subDataBind(sql, "TEST") End Sub <asp:datagrid id="datagrid" style="Z-INDEX: 101; LEFT: 12px; POSITION: absolute; TOP: 72px" runat="server" Font-Names="MS Pゴシック" CellPadding="3" BorderWidth="1px" BorderStyle="None" BorderColor="Black" AllowPaging="True" PageSize="2" BackColor="White" Font-Size="Medium" Height="100px"> <SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle> <AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle> <ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle> <HeaderStyle Font-Size="Medium" Font-Names="MS Pゴシック" Font-Bold="True" HorizontalAlign="Center" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle> <FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle> <Columns> <asp:ButtonColumn Text="参照" ButtonType="PushButton" CommandName="sansyo" DataTextFormatString="sansyo"></asp:ButtonColumn> <asp:ButtonColumn Text="詳細" ButtonType="PushButton" CommandName="syosai"></asp:ButtonColumn> </Columns> <PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C" Position="TopAndBottom" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle> </asp:datagrid> 長くて申し訳ありません。 | ||||
|
投稿日時: 2005-09-15 12:04
こんにちは。
サンプルコードに変換する時に間違ったのかな???
Handles DG_HINBANになってるけど。。。Handles datagrid じゃないかな? そもそも、デバッグした時にPageIndexChanged内は通っていますか? | ||||
|
投稿日時: 2005-09-15 12:29
すみません。変換間違いです。
DG_HINBAN→datagridです。 デバックしたときにPageIndexChangedは通っています。 | ||||
|
投稿日時: 2005-09-15 12:31
ちょこちょこおかしなところはありますけど
これはサンプルコードに変換するときのものですよね? SE卵さんが言われてる通りHandles句を変更すれば大丈夫だと 思います! | ||||
|
投稿日時: 2005-09-15 12:41
んー
strSqlじゃなくてsqlじゃない?でも、た ぶんこれも変換ミスだろうと思いますが、一応。 というか、一度ご自分でこのサンプルコードを 直した方が良いのではないでしょうか? ぱぱさんもおっしゃっていますが、ちょこちょ こおかしなところがあるんで。。。文字の間違 い探しのために皆さん見ているわけじゃない、 とい事を分かっていただきたい。 | ||||
|
投稿日時: 2005-09-15 12:52
DataGrid/IsPostBack/DataBindのFAQ問題では?
| ||||
|
投稿日時: 2005-09-15 13:05
ばばさん、SE卵さん返答ありがとうございます。
確かにSE卵さんの言われる通り間違い探しをしてもらっているわけではありません。 もう一度見直してサンプルコードを直しましたのでよろしくお願いします。 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dim sql as String If Not IsPostBack Then datagrid.CurrentPageIndex = 0 End If sql = "" sql = sql & " SELECT TEST ASテスト " sql = sql & " FROM TEST " subDataBind(sql, "TEST") End Sub Private Sub subDataBind(ByValr sql As String, ByVal strMember As String) Dim con As OracleConnection = New OracleConnection Dim cmd As New OracleCommand Dim rd As OracleDataReader Dim ds As New DataSet con.ConnectionString = "User Id=test; Password=test; Data Source=test; cmd.Connection = con cmd.CommandText = sql Dim da As New OracleDataAdapter da.SelectCommand = cmd da.Fill(ds, strMember) datagrid.DataSource = ds datagrid.DataMember = strMember datagrid.DataBind() da.Dispose() con.Close() End Sub Private Sub datagrid_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles datagrid.PageIndexChanged Dim sql As String datagrid.CurrentPageIndex = e.NewPageIndex sql = "" sql = sql & " SELECT TEST AS テスト " sql = sql & " FROM TEST " subDataBind(sql, "TEST") End Sub <asp:datagrid id="datagrid" style="Z-INDEX: 101; LEFT: 12px; POSITION: absolute; TOP: 72px" runat="server" Font-Names="MS Pゴシック" CellPadding="3" BorderWidth="1px" BorderStyle="None" BorderColor="Black" AllowPaging="True" PageSize="2" BackColor="White" Font-Size="Medium" Height="100px"> <SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle> <AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle> <ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle> <HeaderStyle Font-Size="Medium" Font-Names="MS Pゴシック" Font-Bold="True" HorizontalAlign="Center" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle> <FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle> <Columns> <asp:ButtonColumn Text="参照" ButtonType="PushButton" CommandName="sansyo" DataTextFormatString="sansyo"></asp:ButtonColumn> <asp:ButtonColumn Text="詳細" ButtonType="PushButton" CommandName="syosai"></asp:ButtonColumn> </Columns> <PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C" Position="TopAndBottom" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle> </asp:datagrid> todoさんありがとうございます。 DataGrid/IsPostBack/DataBindのFAQ問題では? というのは、どこかにFAQであるって意味なのでしょうか? | ||||
|
投稿日時: 2005-09-15 13:12
どうも。直してくれてありがとうございます。
疑問がPage_Loadでも毎回subDataBind(sql, "TEST") が呼ばれている。 毎回呼んでいる理由は? 今の状態だと、Page_Load内で一回、datagrid_PageIndexChangedで一回 呼ばれる事になりますよね。これが直接的な原因かどうか分からないけど Page_Load内のsubDataBind(sql, "TEST")はIf Not IsPostBack Then の中でいいんじゃないですか? |