在datagrid里面添加一个模板列,然后放入一个label控件,在aspx页面的html代码里面给这个label控件绑定值:
<asp:TemplateColumn HeaderText="Complete Level">
<ItemTemplate>
<asp:Label id="lbl_level" runat="server"><%# DataBinder.Eval(Container,"DataItem.task_level") %></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>然后在cs代码文件里面读取每行label的值:
System.Web.UI.WebControls.Label lbl; foreach(DataGridItem oDataGridItem in DataGrid1.Items)
{

lbl = (Label)oDataGridItem.FindControl("lbl_level");

lbl.Text += "....done";  

}
上面代码就是先把label控件的值读出来,然后在当前文本后面加点文本,但是我发现里面lbl.Text的值是空的,根本读不到datagrid里面label控件的值.然后我又试验改变绑定的值为普通的值,例如<asp:TemplateColumn HeaderText="Complete Level">
<ItemTemplate>
<asp:Label id="lbl_level" runat="server"> hello world </asp:Label>
</ItemTemplate>
</asp:TemplateColumn>改为普通的值就又能读出了,数据库绑定的就读不了,请问这是为什么啊????如何解决啊??

解决方案 »

  1.   

    改为如下取值:
    for(int i=0;i<this.datagrid1.Items.Count;i++)
    {
    Label mylab = (label)this.datagrid1.Items[i].FindControl("lbl_level");
    this.response.write(mylab.Text);
    }
      

  2.   

    <asp:TemplateColumn HeaderText="Complete Level">
    <ItemTemplate>
    <Label><%# DataBinder.Eval(Container,"DataItem.task_level")%><Label>
    </ItemTemplate>
    </asp:TemplateColumn>你这样试,以前我这样做是没有问题的
      

  3.   

    <Label><%# DataBinder.Eval(Container,"DataItem.task_level")%></Label>