datagrid中有checkbox模板列,如何能知道用户选了哪些checkbox呀?客户要求点中哪些,就说明哪些是需要的,最后再点一个button按钮,可以提交所有选中的行。button不在datagrid中,高手快帮忙,急死了:(5555555

解决方案 »

  1.   

    你可以给那个button在后台家一句button1.Attributes["onclick"] = "javascript:return proc1();";  其中proc1是javascript函数以得到checkbox的值。
      

  2.   

    for(int i = 0; i < dataGrid.Item.count - 1;i ++)
    {
    if (dataGrid.Item.ItemType == ListItemType.Item || dataGrid.Item.ItemType == ListItemType.AlternatingItem ||dataGrid.Item.ItemType == ListItemType.SelectedItem)
     {
        if((checkbox)dataGrid.Item.FindControl("checkBoxName").Selected)
    {}
     }
    }
      

  3.   

    参考
    http://singlepine.cnblogs.com/articles/266538.html
    及下面代码
    需要
    using System.Text;private void btndelete_Click(object sender, System.EventArgs e)
    {
                StringBuilder s=new StringBuilder();
                foreach(DataGridItem di in DataGrid1.Items) 
                { 
                     if(((CheckBox)(di.FindControl("chkExport"))).Checked==true) 
                     { 
                      s.Append(",").Append(DataGrid1.DataKeys[di.ItemIndex].ToString());
                     } 
                } 
                if(s.ToString().StartsWith(",")==true)
                {
                    delete(s.ToString().Substring(1,s.ToString().Length-1));
                }
    }
    private void delete(string id)
    {
                SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
                string sql=@"declare @sql nvarchar(400)
                            set @sql = 'delete from testgrid where UserID in('+@UserID+')'
                            exec( @sql)";
                SqlCommand comm=new SqlCommand(sql,conn);
                SqlParameter parm1=new SqlParameter("@UserID",SqlDbType.VarChar,200);
                parm1.Value=id;
                comm.Parameters.Add(parm1);
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
                DataBind();
    }
      

  4.   

    http://blog.csdn.net/sunnystar365/archive/2005/09/28/491139.aspx如果需要保持每页先前选择的checkbox的状态,就看版主LoveCherry的例子
    http://lovecherry.cnblogs.com/archive/2005/10/18/257338.html
      

  5.   

    循环DataGrid.Items
    找到CheckBox
    CheckBox cb=(DataGrid.Items[i].FindControl("checkbox1") as CheckBox);
    检查是否选中
    if (cb.Checked)
    {
    //
    }
      

  6.   

    请问,你所说的提交是提交到哪?是存盘吗?还是将选中的删除?还是只是知道用户选中了那些行就可以了呀?要是只是为了知道用户选中了那些记录,我建议你在datagrid中选择一个可以唯一标示该行的列,然后遍历datagrid,确定checkbox的状态,当有checkbox为选中值时,用Label记录下这个唯一标示列的值,应该就可以了。下面的代码可以参考一下
    foreach (DataGridItem di in mydatagrid.Items)  //针对页面
    {
    if (((CheckBox)di.FindControl("chkOn")).Checked)
    {
    li_checked = di.DataSetIndex;
    string para_ID = ds.Tables[0].Rows[li_checked]["ID"].ToString();
    Label1.Text = para_ID;
    }
      

  7.   

    完整例子:
    <%@ Page language="c#" Codebehind="WebForm3.aspx.cs" AutoEventWireup="false" Inherits="bsTest2005_8_16.WebForm3" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm3</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script language="javascript">
    function test(obj)
    {
    var id = obj.id;
    id = id.replace("_TextBox1","").replace("_TextBox2","");
    var result = document.all[id+'_TextBox1'].value * document.all[id+'_TextBox2'].value;
    alert(result);
    }

    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 360px; POSITION: absolute; TOP: 16px" runat="server"
    Text="输出当前选中"></asp:Button>
    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <FONT face="宋体">
    <asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    <asp:TextBox id="TextBox1" style="Z-INDEX: 103; LEFT: 360px; POSITION: absolute; TOP: 72px" runat="server"
    TextMode="MultiLine" Height="136px"></asp:TextBox>
    </form>
    </body>
    </HTML>
    ---------------------------
     private void Page_Load(object sender, System.EventArgs e)
            {
                if(!IsPostBack)
                {
                    BindData();            }
            }        private void BindData()
            {
                DataTable dt1 = new DataTable();
                dt1.Columns.Add("field1");
                dt1.Columns.Add("field2");
                dt1.Columns.Add("field3");
                dt1.Columns[1].DataType = System.Type.GetType("System.DateTime");
     dt1.Columns[2].DataType = System.Type.GetType("System.Double");
                Random radm = new Random();
                for(int i=1;i<10;i++)
                {
                    dt1.Rows.Add(new object[]{i,DateTime.Now,((double)radm.Next(10000))/1000});
                }           
                this.DataGrid1.DataSource=dt1;
                this.DataGrid1.DataBind(); }        
            private void Button1_Click(object sender, System.EventArgs e)
            {
                for(int i=0;i<this.DataGrid1.Items.Count;i++)
                {
                    CheckBox cb = (CheckBox)this.DataGrid1.Items[i].Cells[0].FindControl("CheckBox1");
                    if(cb.Checked)
                    {
                        this.TextBox1.Text += this.DataGrid1.Items[i].Cells[1].Text + ",";
                    }
                }
            }
      

  8.   

    多贴了一点,上面<script language="javascript">
    function test(obj)
    {
    var id = obj.id;
    id = id.replace("_TextBox1","").replace("_TextBox2","");
    var result = document.all[id+'_TextBox1'].value * document.all[id+'_TextBox2'].value;
    alert(result);
    }

    </script>
    这段是没用的~~~~~~
      

  9.   

    还有这里:
    http://community.csdn.net/Expert/topic/4555/4555080.xml?temp=.9799311
    我贴了一个javascript实现的例子,能处理跨页、全选等问题,