- PR -

DataGrid内のデータ取得について

1
投稿者投稿内容
ベンジャミン
会議室デビュー日: 2005/02/12
投稿数: 7
投稿日時: 2005-02-12 16:20
はじまめして。

以下のようなデータグリッドがあります。

<Columns> <asp:BoundColumn DataField="SYOCD" HeaderText="品番"> <HeaderStyle Width="70px"></HeaderStyle> </asp:BoundColumn>

<asp:BoundColumn DataField="SYONAME" HeaderText="品名"> <HeaderStyle Width="100px"></HeaderStyle> </asp:BoundColumn>
<asp:TemplateColumn HeaderText="注文数"> <ItemTemplate> <asp:TextBox id=Textbox1 runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"URIAGESU_SYUKEI") %>'> </asp:TextBox> </ItemTemplate> </asp:TemplateColumn>

<asp:TemplateColumn HeaderText="発注者コード">
<ItemTemplate>
<asp:TextBox id="hattyusya" runat="server" Text="ddd"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>

品番と品名のデータ取得方法は以下のようしてに取得できました。
'品番取得(xは行数)
Dim syoCD as String= grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(0).Text
'品名取得(xは行数)
Dim syoNM as String = grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(1).Text

しかし、ItemTemplateを使用している、注文数、発注者コードは上記と同様では取得できません。
'注文数取得(xは行数)
Dim orderSU as String= grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(2).Text
'発注者コード取得(xは行数)
Dim hattyusyaCD as String = grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(3).Text

ItemTemplateを使用した列のデータ取得方法がわかりません。教えていただけたらと思います。
Lin
ベテラン
会議室デビュー日: 2004/11/08
投稿数: 50
投稿日時: 2005-02-12 17:48
Cells(2).FindControlしましょう。
もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2005-02-13 01:50
Linさんとかぶりますが、
ItemCommandなどのイベントプロシージャで、
Private Sub grdMISEBETSU_URIAGE_SYUKEI_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles grdMISEBETSU_URIAGE_SYUKEI.ItemCommand
if e.CommandName="コマンド名" then
Dim orderSU as String=CType(e.item.FindContorol("TextBox1"),TextBox).Text
end if
end sub
としてみてはいかがでしょうか。
ベンジャミン
会議室デビュー日: 2005/02/12
投稿数: 7
投稿日時: 2005-02-14 11:58
お世話になります。
試してみたのですが

@
Dim orderSU as String = grdMISEBETSU_URIAGE_SYUKEI.Items(i).Cells(2).FindControl
とすると、「この引数の数を受け付けるFindControlがないため、オーバーロードの解決に失敗しました」
と出力されてしまいました。


A
Private Sub grdMISEBETSU_URIAGE_SYUKEI_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles grdMISEBETSU_URIAGE_SYUKEI.ItemCommand
If e.CommandName = "コマンド名" Then
Dim orderSU As String = CType(e.Item.FindContorol("TextBox1"), TextBox).Text
End If
End Sub
とすると、「FindControlはSystem.Web.UI.WebControls.DataGridItemのメンバではありません」と出力されてしまいました。



記述漏れなのですが、データを受け取るのは、ボタンが押された際に取得したいです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'品番取得(xは行数)
Dim syoCD as String= grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(0).Text
'品名取得(xは行数)
Dim syoNM as String = grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(1).Text


しかし、ItemTemplateを使用している、注文数、発注者コードは上記と同様では取得できません。
'注文数取得(xは行数)
Dim orderSU as String= grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(2).Text
'発注者コード取得(xは行数)
Dim hattyusyaCD as String = grdMISEBETSU_URIAGE_SYUKEI.Items(x).Cells(3).Text

End Sub

いい方法ありますでしょうか?
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-02-14 12:20
こんにちは。

コード:

Dim orderSU as String
Dim txtbox1 as TextBox

txtbox1 = CType(grdMISEBETSU_URIAGE_SYUKEI.Items(行番号).FindControl("Textbox1"), TextBox)
orderSU = txtbox1.text



FindControlの使い方を一度ヘルプ等で確認した方が良いかと。。。


[ メッセージ編集済み 編集者: SE卵 編集日時 2005-02-14 12:25 ]
ベンジャミン
会議室デビュー日: 2005/02/12
投稿数: 7
投稿日時: 2005-02-14 13:25
皆様、ありがとうございました。
ようやくクリアできました。
1

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