当前位置:编程学习 > C#/ASP.NET >>

动态绑定 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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,