2012-11-08 15:29:56nut

求出CheckboxList中 被勾選的值

在求出CheckboxList的值時, 可以利用控制項的SelectedIndexChanged方法
在裡面加上下列語法, 即可求出

        Dim SelectedValue As String = ""
        For Each item As ListItem In Checkboxlist的ID名稱.Items
            If item.Selected Then
                SelectedValue &= item.Value & "," 'item.Value存值, item.Text存字樣
            End If
        Next

但是實務上會發現, 有時候在按下按鈕後, SelectedIndexChanged事件還沒觸發, 導致抓不到值
一時之間找不到SelectedIndexChanged事件觸發的順序點, 我的方法是直接自定一個SUB, 裡面放上述語法
在需要的時後直接呼叫它, 也可以順利取到值.

    '自訂程式 CKblist_Payment 抓值
    Sub getSelectedPayment()
        Dim SelectedValue As String = ""
        For Each item As ListItem In Ckblist_Payment.Items 'Ckblist_Payment是控制名稱
            If item.Selected Then
                SelectedValue &= item.Value & "," 'item.Value存值, item.Text存字樣
            End If
        Next
        Me.Hidden_Payment.Value = SelectedValue
    End Sub

'按下按鈕後 重抓一次CKblist_Payment中 被勾選的值
call getSelectedPayment()
'執行修改資料程式
call UpdateData()



另外, 如果是要用JAVASCRIPT判斷, CheckBoxList有沒有值被勾選的話, 則

1.         利用checkboxlist.ClientID取出checkboxlist的物件

2.         利用雙層迴圈的方式, 取出每個選項的第一個CELL(核取方塊)是否有被勾選, 如果有, 就取出第二個CELL(選項字樣)並做加工

JavaScript中語法如下

str += "var paymentValue = '';"

str += "var i = 0;"

str += "var j = 0;"

str += "var checkboxlist = document.getElementById('" & Me.CheckBoxList控制項.ClientID & "');"

str += "for(i=0;i<checkboxlist.rows.length;i++)"

str += "{"

str += "for(j=0;j<checkboxlist.rows[i].cells.length;j++)"

str += "{"

str += "if(checkboxlist.rows[i].cells[j].childNodes[0].checked==true)"

str += "{"

str += "paymentValue= paymentValue + checkboxlist.rows[i].cells[j].childNodes[1].innerText+',';"

str += "}"

str += "}"

str += "}"

str += "if(paymentValue=='')"

str += "{"

str += "alert('請勾選!');"

str += "checkboxlist.rows[0].cells[0].focus();"

str += "return false;"

str+= "}"