1.
function test()
{
var inputs = document.getElementById("DataGrid1").getElementsByTagName("INPUT");
for(var i=0;i<inputs.length;i++)
{
if(inputs[i].type=="checkbox" && inputs[i].checked==false)
{
alert("没有全部选中");
return false;
}
}
return true;
}

解决方案 »

  1.   

    .cs
    protected void DefaultLoad()
        {
            DataSet ds;
            CDB db = new CDB();
            if (db.Query("Select * From [t]", "t", out ds) > 0)
            {
                dg.DataSource = ds.Tables[0].DefaultView;
                dg.DataBind();
            }
        }
        protected void Lookfor(object sender, EventArgs e)
        {
            CheckBox cb = (CheckBox)dg.SelectedItem.FindControl("cb");
           if (cb == null) return;
           if (cb.Checked == true)
           {
               sh.Text = "选种";
           }
           else
           {
               sh.Text = "没有选种";
           }
        }
    -----------------
    .aspx
    <form id="form1" runat="server" method="post">
    <asp:DataGrid ID="dg" runat="server" DataKeyField="id" OnSelectedIndexChanged="Lookfor">
        <Columns>
            <asp:TemplateColumn>
                <ItemTemplate>
                    <asp:CheckBox runat="server" ID="cb" Text='<%# Eval("id") %>' Checked='<%# Eval("fvalue") %>' />
                </ItemTemplate>
            </asp:TemplateColumn>
            <asp:ButtonColumn ButtonType="LinkButton" Text="查看" CommandName="Select">
            </asp:ButtonColumn>
        </Columns>
    </asp:DataGrid>
    <asp:TextBox ID="sh" runat="server"></asp:TextBox>
    </form>
      

  2.   

    第二个问题。
    这里我只能例如了
    服务器段处理,<asp:Label>绑定到该列上,
    foreach {CheckBox cb = (CheckBox)dg.SelectedItem.FindControl("cb");处理}
    这样就可以计算了如果客户端处理,首先要有一个客户控件记录该值
    这里就有个问题 你怎么去获取这个值,做起来又点麻烦
     
      

  3.   

    上面的改下...
    for(int i=0;i<gd.Items.Count;i++)
    {
      CheckBox cb = (CheckBox)dg.Items[i].FindControl("cb");
      //处理
    }
      

  4.   

    晕哦 CheckBox 换成你要处理的控件类型就可以了
      

  5.   

    可能偶没表达清楚我的意思是页面上有个Label(一开始值=0)每当勾选了一个CheckBox  那这行的某列(为数字)就加起来显示到Label如:勾选第2行(该行某列值为100)   Label显示为100
    继续勾选第6行(该行某列值为400)   Label显示为500(100+400)
    继续勾选第10行(该行某列值为800)  Label显示为1300(100+400+800)去掉勾选的第6行(该行某列值为400) Label显示为900(100+800)都是实时变化的能办到么?
      

  6.   

    for(int i=0;i<gb.Items.Count;i++)
    {
    int sum = 0;
      CheckBox cb = (CheckBox)dg.Items[i].FindControl("cb");
    if(cb.Checked)
    {
    sum+=Convert.ToInt32(/*那一列的值*/)
    }
    }
      

  7.   

    要实时最好用js做,你把grid的代码贴出来,才能看看怎么取到那个值