2008-12-08 78 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; 
      }  
     } 
相关问题