日期:2014-05-18  浏览次数:20975 次

怎样动态显示datagridview的列。
各位前辈请教一个问题:
我想做一个录入学生成绩的系统。成绩表是这样的。表名:score 列名为:courseid(课程id),studentid(学号),examscore(考试成绩),lessontype(课程类型,必修选修,考察),semester(学期),classid(班级编号)。 我想做一个输入成绩的表,大概表示这样构成的。第一列是学号,2是学生名称,(前面这两列的值都要从数据库中搜索出来,值都是其他界面自动添加进去的。) 从第三列开始生成动态的列,根据课程类型分先后,(这个列名是要从courseid中筛选出符合本班的课程然后生成列。) 最后这个表是要实现先score表写入成绩数据。 主要内容就是这个。现在小弟主要是没有想法。望各位前辈不吝赐教。

------解决方案--------------------
C# code
//生成

TemplateField aa = new TemplateField();
Label l1=new Label();
l1.Text="dd";
          aa.ItemTemplate.InstantiateIn(l1)
将aa增加给GridView
this.GridView1.Columns.Add(aa)

------解决方案--------------------
C# code
--下面是转的
 /**//// <summary>
    /// 绑定生成GridView
    /// </summary>
    /// <param name="gdv">要绑定的GridView</param>
    /// <param name="dtblDataSource">GridView的数据源</param>
    /// <param name="strDataKey">GridView的DataKeyNames</param>
    public static void GridViewBind(GridView gdv, DataTable dtblDataSource, string strDataKey)
    ...{
        gdv.Columns.Clear();

        gdv.AutoGenerateColumns = false;
        gdv.DataSource = dtblDataSource;
        gdv.DataKeyNames = new string[] ...{ strDataKey };

        for (int i = 0; i < dtblDataSource.Columns.Count; i++)   //绑定普通数据列
        ...{
            BoundField bfColumn = new BoundField();
            bfColumn.DataField = dtblDataSource.Columns[i].ColumnName;
            bfColumn.HeaderText = dtblDataSource.Columns[i].Caption;
            gdv.Columns.Add(bfColumn);
        }

        gdv.Columns[1].Visible = false;

        CommandField cfModify = new CommandField();  //绑定命令列
        cfModify.ButtonType = ButtonType.Button;
        cfModify.SelectText = "修改";
        cfModify.ShowSelectButton = true;
        gdv.Columns.Add(cfModify);

        gdv.DataBind();
    }

------解决方案--------------------
探讨
C# code//生成

TemplateField aa = new TemplateField();
Label l1=new Label();
l1.Text="dd";
aa.ItemTemplate.InstantiateIn(l1)
将aa增加给GridView
this.GridView1.Columns.Add(aa)