- PR -

DataList内の各CheckBoxの状態を取得したいのですが

1
投稿者投稿内容
MI
常連さん
会議室デビュー日: 2007/01/30
投稿数: 30
投稿日時: 2007-06-02 18:37
お世話になっております。
表題の件について、お知恵をお貸しください。
開発環境は、VB と ASP.net 2.0です。


指定数のチェックボックスをDataListにて展開しております。
数と、Label内容はDBに登録してあります。
DataListの訳は、「RepeatColumns」を利用したい為です。

更新ボタンがページにあり、
ユーザーが何にチェックを入れたか(複数可)をDBに保存したいのですが
DataList内の各チェックボックスの状態を取得する方法が
うまくいかず悩んでおります。


こちらの過去ログを参考に

DataListイベントの ItemDataBound時に
e.Item.ClientID で HiddenFieldに全て記入→
更新時にFindContorol(取得した名前)で Text名とChecked状態を全て取得

しようとしたのですが
FindContorolでNothingが返り、取得できません。
HTMLを開いてみると、確かに取得できた名前と同じIDが存在しています。

DataList名.FindContorol(取得した名前)などやってみたのですが
一向に上手くいきません。。。

お心あたりのある方、アドバイスを頂けませんでしょうか。

以下現在のコードを記入いたします。

DataList ID="dlstShouhin"
内CheckBox 元ID="shCheck"

===.aspx=================================================

<asp:DataList ID="dlstShouhin" runat="server" RepeatColumns=4>
<ItemTemplate>
<asp:CheckBox ID="shCheck" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "CODENML") %>' Checked='<%# DataBinder.Eval(Container.DataItem, "CODEVAL") %>'/>
</ItemTemplate>
</asp:DataList>

===.aspx.vb=================================================
<イベント>
Private Sub dlstShohin_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dlstShouhin.ItemDataBound
  
hfShohinCodes.Value += e.Item.ClientID & "_shCheck" & ","
End Sub


<保存時>
Private Function GetShohinCodes(ByVal conn As OracleConnection) As String

If Len(hfShohinCodes.Value) > 0 Then
Dim ary() As String = Split(Left(hfShohinCodes.Value, Len(hfShohinCodes.Value) - 1), ",")
Dim str As String = ""
Dim i As Integer
Dim ck As CheckBox

For i = 0 To UBound(ary)
ck = CType(FindControl(ary(i)), CheckBox) ←****
ck = CType(dlstShouhin.FindControl(ary(i)), CheckBox)←****





****の箇所が、どちらもNothingになります。
aryの中身と、HTML内のIDは一致していました。
FindContorolの使い方が悪いのでしょうか。

どうぞよろしくお願いいたします。

<編集>×2
すみません、IDが別のを書いていたので編集しました。



[ メッセージ編集済み 編集者: MI 編集日時 2007-06-02 18:41 ]

[ メッセージ編集済み 編集者: MI 編集日時 2007-06-02 18:59 ]
MI
常連さん
会議室デビュー日: 2007/01/30
投稿数: 30
投稿日時: 2007-06-02 19:54
すみません、自己解決しました。

生成されたIDではなく、元のIDで
ck = CType(dlstShouhin.Items(0).FindControl("shCheck"), CheckBox)

と探すと見つかりました。
お騒がせして申し訳ありません。
1

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