2008-12-08 81 views

回答

4

嘿,我找到答案。它如下:

function checkBoxselectedornot() 
{ 

     var frm=document.forms['aspnetForm']; 
     var flag=false; 
     for(var i=0;i<document.forms[0].length;i++) 
     { 
      if(document.forms[0].elements[i].id.indexOf('chkDownloadSelectedEvent')!=-1) 
      { 
       if(document.forms[0].elements[i].checked) 
       { 
         flag=true 
       } 
      } 
     } 
     if (flag==true) 
     { 
     return true 
     }else 
     { 
     alert('Please select at least one Event.') 
     return false 
     } 

} 
2
if(document.getElementById('checkBoxId').checked) { 
    //checked 
} else { 
    //not checked 
} 

編輯:如果您想查詢一個表格的所有複選框就可以通過收集循環:

var inputs = document.getElementById('formId').getElementsByTagName('input'); 
var isChecked = false 
for(var i = 0; i < inputs.length; i++) { 
    if(inputs[i].type == 'checkbox' && inputs[i].checked) { 
     isChecked = true; 
    } 
} 

if(isChecked) { 
    //at least one checkbox checked 
} 
+1

感謝名單,但複選框在GridView的項目模板。所以它不能被訪問,因爲gridview是以html格式轉換成表格格式的。 – 2008-12-08 10:55:10

2

服務器端:

//在按鈕單擊事件:

bool flag = false;

對(INT I = 0;我< gridview1.rows.count;我++)

{
如果(checkbox1.checked)

flag = true; 

}

如果(標誌)

{

//我答ATLEAST一個複選框被選中

}

+0

感謝您的回答。但我必須用java腳本來完成。 – 2008-12-08 10:53:28

1

您將不得不添加一些自定義JavaScript到您的頁面,以便客戶端警報顯示。下面是一個叫做「GridView1」 GridView的工作,我已經寫了一個方法(這應該是默認的名稱,如果你剛拖控件到您的ASPX頁面):

<script type="text/javascript"> 
    function ClientCheck() { 
     var valid = false; 
     var gv = document.getElementById("GridView1"); 

     for (var i = 0; i < gv.all.length; i++) { 
      var node = gv.all[i]; 
      if (node != null && node.type == "checkbox" && node.checked) { 
       valid = true; 
       break; 
      } 
     } 
     if (!valid) { 
      alert("Invalid. Please select a checkbox to continue."); 
     } 

     return valid; 
    } 
</script> 

你可以看到它將一個變量設置爲GridView控件,然後循環遍歷for循環中的所有子項。如果孩子是checkbox並且它是checked,那麼我們將valid變量設置爲true。如果我們到迭代結束時沒有發現複選框,那麼valid仍然是假,我們執行警報。

要將此鏈接鏈接到您的ASPX頁面上的GridView,請首先將按鈕列設置爲TemplateField並用您的客戶端代碼圍繞LinkButton。如果您已經使用設計器設置了列,則可以使用列編輯器中的「將此字段轉換爲TemplateField」鏈接)。這裏是你會落得源的例子:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1"> 
    <Columns> 
     <asp:TemplateField HeaderText="Button Field" ShowHeader="False"> 
      <ItemTemplate> 
       <span onclick="return ClientCheck();"> 
        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="IDClick" Text='<%# Eval("YourDataSourceItem") %>'></asp:LinkButton> 
       </span> 
      </ItemTemplate> 
     </asp:TemplateField> 
     // ...your remaining columns... 

使用TemplateField讓我們添加任何我們喜歡的客戶端代碼。這裏我們添加一個span並使用onclick來調用我們的ClientCheck方法。

如果您不關心警報,您可以通過使用在服務器端執行的CustomValidator控件來實現您的目標。

我希望這會有所幫助。

0
<script type="text/javascript" language="javascript"> 
     function CheckboxSelect() { 

      var LIntCtr; 
      var LIntSelectedCheckBoxes = 0; 

      for (LIntCtr = 0; LIntCtr < document.forms[0].elements.length; LIntCtr++) { 
       if ((document.forms[0].elements[LIntCtr].type == 'checkbox') && (document.forms[0].elements[LIntCtr].name.indexOf('chkID') > -1)) { 
        if (document.forms[0].elements[LIntCtr].checked == true) { 
         LIntSelectedCheckBoxes = parseInt(LIntSelectedCheckBoxes) + 1; 
        } 
       } 
      } 
      if (parseInt(LIntSelectedCheckBoxes) == 0) { 
       alert('User(s) Must Be Selected For operation !'); 
       return false; 
      } 
     } 
    </script> 
3
protected void OnCheckedChanged(object sender, EventArgs e) 
     { 
      bool flag = false; 

      foreach (GridViewRow row in Grid_InvoiceGarden.Rows) 
      { 
       CheckBox chkItem = (CheckBox)row.FindControl("chkSelect"); 
       if (chkItem.Checked) 
        flag = true; 
      } 
      if (flag == true) 
      { 
       btnUpdate.Visible = true; 
      } 
      else 
      { 
       btnUpdate.Visible = false; 
      }  
     } 
相關問題