- PR -

DataGridのページング

投稿者投稿内容
ryu
常連さん
会議室デビュー日: 2005/07/05
投稿数: 30
投稿日時: 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>

長くて申し訳ありません。
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-09-15 12:04
こんにちは。
サンプルコードに変換する時に間違ったのかな???

コード:
datagrid_PageIndexChanged・・・Handles DG_HINBAN.PageIndexChanged 



Handles DG_HINBANになってるけど。。。Handles datagrid じゃないかな?
そもそも、デバッグした時にPageIndexChanged内は通っていますか?
ryu
常連さん
会議室デビュー日: 2005/07/05
投稿数: 30
投稿日時: 2005-09-15 12:29
すみません。変換間違いです。
DG_HINBAN→datagridです。

デバックしたときにPageIndexChangedは通っています。
ぱぱ
常連さん
会議室デビュー日: 2005/09/01
投稿数: 34
投稿日時: 2005-09-15 12:31
ちょこちょこおかしなところはありますけど
これはサンプルコードに変換するときのものですよね?

SE卵さんが言われてる通りHandles句を変更すれば大丈夫だと
思います!
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-09-15 12:41
んー

コード:
sql = "" 
sql = sql & " SELECT TEST AS テスト " 
strSql = strSql & " FROM TEST " 

subDataBind(sql, "TEST") 



strSqlじゃなくてsqlじゃない?でも、た
ぶんこれも変換ミスだろうと思いますが、一応。

というか、一度ご自分でこのサンプルコードを
直した方が良いのではないでしょうか?

ぱぱさんもおっしゃっていますが、ちょこちょ
こおかしなところがあるんで。。。文字の間違
い探しのために皆さん見ているわけじゃない、
とい事を分かっていただきたい。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-09-15 12:52
DataGrid/IsPostBack/DataBindのFAQ問題では?
ryu
常連さん
会議室デビュー日: 2005/07/05
投稿数: 30
投稿日時: 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であるって意味なのでしょうか?
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-09-15 13:12
どうも。直してくれてありがとうございます。

疑問がPage_Loadでも毎回subDataBind(sql, "TEST") が呼ばれている。
毎回呼んでいる理由は?

今の状態だと、Page_Load内で一回、datagrid_PageIndexChangedで一回
呼ばれる事になりますよね。これが直接的な原因かどうか分からないけど
Page_Load内のsubDataBind(sql, "TEST")はIf Not IsPostBack Then
の中でいいんじゃないですか?

スキルアップ/キャリアアップ(JOB@IT)