我在一个页面中添加了3个GridView,ID分别为GridView1,GridView2,GridView3.和3个SqlDataSource控件,ID分别为SqlDataSource1,SqlDataSource2,SqlDataSource3.
下面以第一个GridView和SqlDataSource为例,其他几个一样。<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ItemID"
                        DataSourceID="SqlDataSource1" ShowHeader="False" Width="264px">
                        <Columns>
                            <asp:BoundField DataField="ItemID" HeaderText="ItemID" InsertVisible="False" SortExpression="ItemID" />
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox1" runat="server" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:HyperLinkField DataNavigateUrlFields="ItemID" DataNavigateUrlFormatString="show.aspx?ItemID={0}"
                                DataTextField="ItemName" HeaderText="ItemName" SortExpression="ItemName" />
                        </Columns>
                    </asp:GridView>
                    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:VoteConnectionString %>"
                        SelectCommand="SELECT [ItemName], [ItemID] FROM [VoteItem] where ItemID BETWEEN 1 AND 40">
                    </asp:SqlDataSource>ItemOperation io = new ItemOperation();
            //遍历网格控件中的每一行
            foreach (GridViewRow rowview in GridView1.Rows)
            {
                //主要搜索模板列中的CheckBox控件
                CheckBox check = (CheckBox)rowview.Cells[2].FindControl("CheckBox1");
                //如果被选中
                if (check.Checked)
                {
                    //更新数据库中的被投次数
                    io.UpdateVote(int.Parse(rowview.Cells[0].Text));
                    this.btnVote.Enabled = false;
                }
            }
其中UpdateVote是我写的一个更新数据库中的被投次数方法。我知道在GridView模板列CheckBox能够多选,可是怎么限制选择数目啊,比如三个GridView一共有120个ChecBox模板列(其中每一个GridView只有40个CheckBox),最多只能选择60个CheckBox。怎么弄啊。请高手帮帮忙啊,最好能提供代码,本人不胜感激。

解决方案 »

  1.   

    在前台用js来判断
    js声明一个全局变量
    选中checkbox的时候+1
    取消的时候-1
    如何数>60了  就让当前选中的checkbox为不选中
      

  2.   

    哈哈,给我分数吧,我帮你找到答案了,下面这个应该是你想要的,楼主要厚道哦,分数分数
    http://topic.csdn.net/u/20081015/16/8b441a39-8905-4a1b-b4a2-6ed2c76219f9.html?166232639
      

  3.   


    <head runat="server">
        <title>无标题页</title>
        <script>
        var count = 0;
        function change(e){    
            if(e.checked)
                count++;
            else
                count--;
            
            if(count>2)
            {
                e.checked=false;
                alert('超过2个');
            }
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowHeader="False" Width="264px">
                <Columns>
                    <asp:BoundField DataField="ItemID" HeaderText="ItemID" InsertVisible="False" SortExpression="ItemID" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <input id="Checkbox1" type="checkbox" runat="server" onclick="change(this)" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:Button runat="server" ID="btn" Text="提交" />
        </form>
    </body>
    </html>楼主给分
      

  4.   

    <asp:Button runat="server" ID="btn" Text="提交" />
    这个事件里写你的更新数据库
      

  5.   

     下班了,明天 要是没解贴,就帮你写个 DEMO
      

  6.   

     <input id="Checkbox1" type="checkbox" runat="server" onclick="change(this)" />
    这个是html控件,我用Web控件<asp:CheckBox ID="CheckBox1" runat="server" />怎么调用写好的js啊。里面没有onclick,只有CheckedChanged
      

  7.   


    <asp:CheckBox ID="CheckBox1" runat="server" onclick="change(this)"  />这样写可以吗??同样能实现效果,不过就是有警告说属性“onclick”不是元素“CheckBox”的有效属性.