0

私のアプリケーションにはチェックボックスリストがあります。以下にリストされているのは、チェックボックス リストの html と、それが配置されているページのロード時にそれをバインドする vb コードです。

<asp:CheckBoxList Runat="server" id="chklistTeams" RepeatColumns="7" RepeatDirection="Horizontal"
                        CellPadding="4" Font-Size="7pt"></asp:CheckBoxList>

以下は、チェックボックスリストをバインドするVBです

myCmd.CommandText = "Select id, title from teams"
Dim DS As SqlDataReader
DS = myCmd.ExecuteReader
chklistTeams.DataValueField = "id"
chklistTeams.DataTextField = "title"
chklistTeams.DataSource = DS
chklistTeams.DataBind()
DS.Close()

保存ボタンを押すと、JavaScript 関数が呼び出されます。以下は、項目の値を取得するために呼び出される関数の一部です。

var checkList = document.getElementById('chklistTeams');
var checkBoxList = checkList.getElementsByTagName("input");
var checkBoxSelectedItems = new Array();

for (var i = 0; i < checkBoxList.length; i++) {
    if (checkBoxList[i].checked) {
        checkBoxSelectedItems.push(checkBoxList[i].value);
        alert('checked - checkBoxList[i]: ' + checkBoxList[i].value)
    }
}

配列に格納されるすべての値 (アラートでテスト済み) - 値「オン」で戻ってくるので、このリストのチェックボックスの html をチェックしました。チェックボックスの 1 つの結果は次のとおりです。

<input name="chklistTeams:21" id="chklistTeams_21" type="checkbox" value="on"/>

値がリストに正しくバインドされていると確信しています-値を取得する古い方法では、アイテムの正しい整数値を取得するためです-以下にリストされているのは、これを処理するために使用されたVBコードです(および文字列を返しましたチェックされたボックスの数に応じた整数 - 値 "on" のリストを返しませんでした)。このページで行っている別の変更のために、javascript を介してこれを取得できるようにする必要があります。Pag​​eMethods を使用して保存する必要があり、パブリック共有関数を使用してバックエンドでこれを使用することはできません。

チェックボックスリストでチェックされた項目の正しい値を取得する VB コード

    For Each li In chklistTeams.Items
        If li.Selected = True Then
            strTeamList = strTeamList & li.Value & ","
            bolTeamSelected = True
        End If
    Next
    If bolTeamSelected = True Then
        strTeamList = strTeamList.Substring(0, strTeamList.Length - 1)
    End If

値を取得するJavaScriptの方法が、VBの方法のように整数値ではなく「オン」になっている理由を誰でも見ることができますか? ご協力いただきありがとうございます。繰り返しますが、これは JS で行う必要があります。関数がパブリックで共有されているため、VB コード ビハインドを使用できません。ありがとう。

4

2 に答える 2

1

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.items.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem.aspx

checkboxlist.items(index) は listitem 型で、listitem にはクライアント側の属性を設定できる attributes プロパティがあります

コード例は次のとおりです: ListItem.Attributes.Add が機能しない

あなたの場合、chklistTeams DataBound イベント:

foreach(ListItem li in chklistTeams.Items)
{
     li.Attributes.Add("JSvalue", li.Value);
}

JavaScript の場合:

checkBoxSelectedItems.push(checkBoxList[i].getAttribute("JSvalue"));
于 2013-01-29T01:24:23.403 に答える
0

これに対する解決策を見つけ、グローバル共有配列を作成し、ロード時に配列にid値を入力し、次にjavasciptを介して、チェックされたアイテムのインデックスを取得できました-その後、同じインデックスの配列に移動してid値を取得できます後で使用します。

于 2013-01-28T16:28:14.853 に答える