如何在单击按钮时检查gridview列中复选框的状态

时间:2008-12-08 10:25:55

标签: c# asp.net javascript

我在gridview中使用了checkbox列。我想检查该复选框的状态。单击按钮时,应检查是否选中了任何复选框。如果未选中任何复选框,则它应显示首先检查复选框的警告消息。

6 个答案:

答案 0 :(得分: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
      }

}

答案 1 :(得分: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;
            }      
        }

答案 2 :(得分: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
}

答案 3 :(得分:2)

服务器端:

  

//在按钮点击事件中:

     

bool flag = false;

     

for(int i = 0; i&lt; gridview1.rows.count; i ++)

     

{
    如果(checkbox1.checked)

 flag = true;
     

}

     

如果(标志)

     

{

     

//表示选中至少一个复选框

     

}

答案 4 :(得分: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仍为false,我们会执行警报。

要将其与您的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控件来实现目标。

我希望这会有所帮助。

答案 5 :(得分: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>