0

動的に生成されるasp.netチェックボックスリストがあり、チェックボックスが最初にチェックされていてチェックされていない場合、いくつかのコードを処理する必要があります。

これは、Jquery または Javascript で行う必要があります。

私が見るすべての例は、「Checked」のすべての値を取得することを扱っています。onClick() イベントの ID をトリガーした特定のアイテムを取得することにのみ関心があるため、他のコードを実行してそれを処理できます。

public void DrawPoolWeekCbList()
{
    var poolWeeks = ControllerFacade.GetAllPoolWeeksByPoolYear(PageView.PoolWeekYear.Text);
    var pWeekCount = poolWeeks.Count;
    var curRecord = 0;
    foreach (var poolWeek in poolWeeks)
    {
        PageView.cblPoolWeeks.Items.Add(poolWeek);
        PageView.cblPoolWeeks.Items[curRecord].Attributes.Add("onclick", "OnCheckBoxClicked("+ poolWeek +")");
        curRecord++;
    }
}

//UI Code
function OnCheckBoxClicked(poolWeek) {
    var chkId = poolWeek.toString();
    $('#<%= lblPoolWeekChange.ClientID %>').text(chkId);
    $(".addNew").dialog("open");
}

私が見たすべてのサンプルは、チェックされたすべてのチェックボックスを見つけて、それらすべてをループします。ここでも、関数をトリガーした特定のチェックボックスIDが必要です。

ありがとう!

//Generated HTML - 
<input id="ContentPlaceHolder1_cblPoolWeeks_0" type="checkbox" name="ctl00$ContentPlaceHolder1$cblPoolWeeks$0" onclick="OnCheckBoxClicked(01);" value="01" /><label for="ContentPlaceHolder1_cblPoolWeeks_0">01</label></td><td><input id="ContentPlaceHolder1_cblPoolWeeks_1" type="checkbox" name="ctl00$ContentPlaceHolder1$cblPoolWeeks$1" onclick="OnCheckBoxClicked(02);" value="02" /><label for="ContentPlaceHolder1_cblPoolWeeks_1">02</label></td><td><input id="ContentPlaceHolder1_cblPoolWeeks_2" type="checkbox" name="ctl00$ContentPlaceHolder1$cblPoolWeeks$2" onclick="OnCheckBoxClicked(03);" value="03" /><label for="ContentPlaceHolder1_cblPoolWeeks_2">03</label>
4

1 に答える 1

1

このスニペットは私にとってはうまくいきました。asp.netページにはCheckBoxListが1つしかないことに注意してください。複数ある場合、これは機能しない可能性があります-これはSINGLEチェックボックスを処理するためのものであり、「 CHECK ALL」機能。これは、後でレコードを更新するために、チェックされたすべての値をセッション変数 (私の場合) に追加する必要がある場合に便利です。

   $(document).ready(function () {
       $("input:checkbox").click(function () {
           if ($(this).is(":checked")) {
               OnCheckBoxClicked(this.value);
           } else {
               OnUnchecked(this.value);
           }
       });
   }); 

   function OnCheckBoxClicked(poolWeek) {

       var chkId = poolWeek.toString();
       //Show DialogBox - Set label to pool week.
       $('#<%= lblPoolWeekChange.ClientID %>').text(chkId);
       $(".addNew").dialog("open");

   }

   function OnUnchecked(poolWeek) {
       var chkId = poolWeek.substring(2, 4);
       var commodity = $('#<%= Commodity.ClientID %> option:selected').text();
       $.ajax(
                {
                    type: "POST",
                    url: "Ajax/DeleteExcludedPoolWeek.aspx",
                    data: "poolWeek=" + chkId +  "&commodity=" + commodity,
                    success: function (msg) {
                        $('#myDiv').text('Pool week status changed.');

                    },
                    error: function (x, e) {
                        alert("The call to the server side failed. " + x.responseText);
                    }
                }
            );
   }
于 2012-10-04T17:19:29.477 に答える