建立带有CheckBox的DataGrid控件
=============================
http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=30240&pageNO=1

解决方案 »

  1.   

    在datagrid.cells[i][j].text="<input type=checkbox>"试试
      

  2.   

    你可以静态拖放个datagrid,只产生一个模版列,里面放checkbox.
    其余列动态生成。我刚做个类似的,肯定能实现。
      

  3.   

    <asp:datagrid id="DataGrid1" Width="532px" BorderWidth="1px" BackColor="White" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True">
    ...
    <Columns>
    <asp:BoundColumn DataField="id" HeaderText="id"></asp:BoundColumn>
    <asp:BoundColumn Visible="False" DataField="name" HeaderText="name"></asp:BoundColumn>
    <asp:TemplateColumn HeaderText="A1">
      <ItemStyle Width="40pt"></ItemStyle>
      <ItemTemplate>
        <asp:CheckBox id="field1" runat="Server" Checked='<%# DataBinder.Eval(Container.DataItem, "A1") %>' />
      </ItemTemplate>
    </asp:TemplateColumn><asp:TemplateColumn HeaderText="A2">
      <ItemStyle Width="40pt"></ItemStyle>
      <ItemTemplate>
        <asp:CheckBox id="field2" runat="Server" Checked='<%# DataBinder.Eval(Container.DataItem, "A2") %>' />
      </ItemTemplate>
    </asp:TemplateColumn>
    ...
    </Columns>
    ...
    </asp:datagrid>
      

  4.   

    多谢了!!我先试试!!to: gOODiDEA(无语) 
    其余列动态生成是这样吗??(我这样写了不行,只有一列)
    TemplateColumn TC =(TemplateColumn)DGFinance.Columns[0]; DGFinance.Columns.Add(TC);
    DGFinance.Columns.Add(TC);如果是,那CheckBox的ID咋改??
      

  5.   

    我的动态列没有模板列,如果一定要动态生成的话,你可以参考一下icyer的文章。(见下)CheckBox的ID应该可以在datagrid的itemdatabound事件里修改。
    ////////////////////////////////
    //作者:icyer
    ////////////////////////////////
    首先,新加入一个类:GenericItem.csusing System;using System.Web;using System.Data;using System.Web.UI;using System.Web.UI.WebControls;public class GenericItem : ITemplate{    private string column;    public GenericItem(string column)    {        this.column = column;    }    public void InstantiateIn(Control container)    {        TextBox txt = new TextBox();        txt.DataBinding += new EventHandler(this.BindData);        container.Controls.Add(txt);    }    public void BindData(object sender, EventArgs e)    {        TextBox txt = (TextBox)sender;        DataGridItem container = (DataGridItem)txt.NamingContainer;        txt.Text = ((DataRowView)container.DataItem)[column].ToString();    }}然后,在一个WebForm中加入一个DataGrid,ID为DataGrid1再然后,在.aspx.cs中加入以下代码:private void Page_Load(object sender, System.EventArgs e){    SqlConnection conn = new SqlConnection("server=icyer;uid=sa;pwd=;database=pubs;");    conn.Open();    SqlDataAdapter da = new SqlDataAdapter("select au_id, au_lname, au_fname from authors order by au_id", conn);    DataSet ds = new DataSet();    da.Fill(ds);    TemplateColumn tc = new TemplateColumn();    tc.ItemTemplate = new GenericItem("au_id");    DataGrid1.Columns.Add(tc);    DataGrid1.DataSource = ds;    if (!Page.IsPostBack)    {        DataGrid1.DataBind();    }}最后,编译,运行。
      

  6.   

    现在动态列倒是可以添加了,但是动态列出现在
    id  Name A1 A2 ....An     
    等列的左边啊,即无论绑定前后都不能索引到绑定的列啊!!!
    我希望带CheckBox的列可以对应的替换
    A1 A2 ....An 啊!!希望知道的帮帮手!!!!!!还有一个方法就是隐藏数据源中的列
      

  7.   

    我是直接把CHECKBOX的脚本写进去作为内容显示的