本人要做一个评分系统,这个系统有多级评价体系,想用DataGrid显示,
简化描述如下:
一级指标(firstId) 二级指标(secondId)  评分
11                   21
                  2212                   23
                  24
                  25第三列是评分,和一级指标对应,就是用模板列加个 TextBox,让他输入就可以,这样一个表格,如何用DataGrid显示? 请给出思路和代码 (C#和aspx)

解决方案 »

  1.   

    只要找到textbox控件,给它赋值应该就可以。
    在DataGrid1_ItemDataBound事件中:
    if(e.Item.ItemType==ListItemType.Item)   {
      TextBox txt=(TextBox)e.Item.FindControl("TextBox1"); //ID号
      txt.Text = e.Item.Cells[0]*80%//你的比例

    }
    应该是可以的,你试试!
      

  2.   

    最主要难点是前面的多级评价指标,实际情况比这个复杂的多,不过如果这个能够搞出来,其余的就是麻烦点。
    每个一级的评价指标有多个二级的评价指标相对应,这个怎么在DataGrid里面显示?
      

  3.   

    我建了一个表: 三个字段, firstId(一级指标), secondId(二级指标), (分数)
    单独的显示一级指标,二级指标都可以,
    Select distinct  firstId from T_ ; ---  返回一个DataTable
    Select distinct  secondId from T_ ; ---  返回一个DataTablepublic void DBBindTest()
    {
    testItemDB item = new testItemDB();

    DataTable firstTb = item.AllfirstId(); // select firstId
    DataTable secondTb = item.AllSecondId();// select secondId DataSet  ds = new DataSet();
    //ds.Tables.Add(firstTb);
    ds.Tables.Add(secondTb);
    ds.Tables.Add(firstTb);
    myDataGrid.DataSource = ds; // secondLabel.Datasource = secondTb.DefaultView; myDataGrid.DataBind();
    }发现:   ds.Tables.Add(secondTb) 和ds.Tables.Add(firstTb); 这两句都这能显示前面的那句的内容,后面的字段就没有了。
    不知道是为什么,怎么都显示出来呢,按照题目的要求?
      

  4.   

    这个系统居然不能加附件,真是郁闷,刚才有说没有太看懂,举个例子:一级指标       二级指标学习策略       学习评价
                   指导教师学习内容       深度
                   覆盖面
                   扩展资源那么,一级指标有两个,学习策略和学习内容。
    学习评价和指导教师都是学习策略对应的二级指标,
    深度,覆盖面,扩展资源都是学习内容对应的二级指标,
    用DataGrid表格的形式显示,
    那么第一列的一级指标就有两行,第二列的二级指标就有五行(不算表头)
      

  5.   

    to :  daishengs(横舟摆渡) ; 实际问题比这个复杂的多, 但是原理应该类似,我这里做了简化。
    不知仁兄有何高见?
      

  6.   

    你添加个模版
    <Columns>
                    <asp:BoundColumn DataField="字段" HeaderText="一级"></asp:BoundColumn>
                    <asp:BoundColumn DataField="字段" HeaderText="列名"></asp:BoundColumn>
                    <asp:BoundColumn DataField="字段" HeaderText="列名"></asp:BoundColumn>
                    <asp:TemplateColumn HeaderText="评分">
                        <ItemTemplate>
                           <asp:TextBox ID="textbox1" runat=server Text=<%# Eval("你要输入的字段") %> ></asp:TextBox></ItemTemplate>
                    </asp:TemplateColumn>
    </Columns>
    方法
    foreach(DataGriditem item in DataGrid1.items)
    {
     TextBox text=(TextBox)item.FindControls("textbox1")
    数据库连接
    SQLCOMMAND
    SQL语句
    }
    datagrid再绑定就可以了
    你可以做个按钮来调用该事件}
      

  7.   

    要是要用到某行的某个字段用
    item.cells[你要的内容].Text
      

  8.   

    我曾经这样做过,在要显示的地方放一个空的Label,然后在后台手工生成一个Tabel HTML代码,再用这个Label显示出来。
    这样就能跨行了。
      

  9.   

    to: lucky749(),感谢你的方法,我先试试;
    to :daishengs(横舟摆渡) , 还不太明白你的意思,能否详细点;
    你说的要显示的地方指的是: 一级指标 下面的字段 ?
      

  10.   

    用DataGrid嵌套的方法解决了,感谢大家。只要回复的都给分。