建立带有CheckBox的DataGrid控件
=============================
http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=30240&pageNO=1
=============================
http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=30240&pageNO=1
其余列动态生成。我刚做个类似的,肯定能实现。
...
<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>
其余列动态生成是这样吗??(我这样写了不行,只有一列)
TemplateColumn TC =(TemplateColumn)DGFinance.Columns[0]; DGFinance.Columns.Add(TC);
DGFinance.Columns.Add(TC);如果是,那CheckBox的ID咋改??
////////////////////////////////
//作者: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(); }}最后,编译,运行。
id Name A1 A2 ....An
等列的左边啊,即无论绑定前后都不能索引到绑定的列啊!!!
我希望带CheckBox的列可以对应的替换
A1 A2 ....An 啊!!希望知道的帮帮手!!!!!!还有一个方法就是隐藏数据源中的列