动态绑定 gridview
现在我获取一个列表,需要将数据绑定在GridView上,但是获取的列表中数据时动态的,比如说我获取小学的课程的时候,可能只有“语文”,“数学”,但是获取初中课程的时候就会查出多的数据来,这时候我就想着用gridview的“自动绑定字段”,这样绑定出来后就可以达到预期的效果了,比如小学的情况:
学号 姓名 语文 数学
001 张三 99 98
002 李四 97 98
。 。 。 。
。 。 。 。
初中:
学号 姓名 语文 数学 物理 化学
001 小A 87 88 89 90
002 小B 88 87 86 82
。 。 。 。 。 。
。 。 。 。 。 。
但是现在我想把gridview上banding的学号这一列隐藏起来,同时,我还需要在GRIDVIEW上添加一列checkbox,它的vaule值为学号字段的值,等checkbox加上之后我在隐藏“学号”这列是遇到了问题,即:
使用 this.gridview.column[0].visiable=false; 是不行的,考虑到checkbox中有必须使用数据源中的学号的那个字段,所以又不能改动数据源。
所以就考虑使用“自动绑定字段”这个方案也是不行的,所以考虑用动态模板来做,别的列可以用DataBoundField,但是checkbox怎么来处理呢?
代码如下:
protected void GV_Bind()
{
DataTable dtTemp = ESR.getRecords(SID,CLASSID);
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
System.Web.UI.WebControls.TemplateField tf = new TemplateField();
tf.ItemTemplate = new MyTemplate(dtTemp.Rows[i]["StudentID"].ToString());
this.SingST.Columns.Add(tf);
}
}
public class MyTemplate : ITemplate
{
private string _value;
public MyTemplate(string value)
{
_value = value;
}
public void InstantiateIn(Control container)
{
string html = "<input type='checkbox' name='BH' value='" + _value + "' /> ";
Page page = (Page)HttpContext.Current.Handler;
container.Controls.Add(page.ParseControl(html));
}
}
目前通过这种方法没有实现,请大家帮忙。。。。。谢谢 --------------------编程问答-------------------- http://blog.csdn.net/Sandy945/archive/2009/07/31/4397142.aspx --------------------编程问答-------------------- 隐藏的话 这里 有个案例 你可以看下 希望对你 有帮助
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246414435a2f97b75561980852d3d5aeb1e41eaf234772a0121aa9bcf9549dabd90292d8b3034074fc70358c75cf28b102a947bd00cadf44ea2&p=8d70c115d9c740ee46a4c7710905&user=baidu
--------------------编程问答-------------------- protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow ||
e.Row.RowType == DataControlRowType.Header)
{
//e.Row.Cells[0].Visible = false; //如果想使第1列不可见,则将它的可见性设为false
e.Row.Cells[1].Visible = false;
//e.Row.Cells[2].Visible = false;
}
}}}
动态添加后,再设置为不可见 --------------------编程问答-------------------- DataTable table = new DataTable();
table.Columns.Add("name");
table.Columns.Add("address");
for(int i = 0; i < 10; ++i)
{
DataRow row = table.NewRow();
row["name"] = "name" + i;
row["address"] = "address" + i;
table.Rows.Add(row);
}
GridView1.AutoGenerateColumns = false;
GridView1.Columns.Clear();
GridView1.Width = 800;
BoundField field = new BoundField();
field.DataField = "name";
field.HeaderText = "Name";
GridView1.Columns.Add(field);
field = new BoundField();
field.DataField = "address";
field.HeaderText = "Address";
GridView1.Columns.Add(field);
GridView1.DataSource = table;
GridView1.DataBind(); --------------------编程问答-------------------- 可以每次动态添加数据集后,再隐藏某列的数据。
如
GridView1.DataSource = ds;
GridView1某列隐藏。
补充:.NET技术 , ASP.NET