后台获得
DataBinder.Eval(e.Item.DataItem, "id") 这种方法使用简单。
((DataRowView)(e.Item.DataItem))["id"] 这种方法执行效率高。如果是asp:label 或者asp:TextBox  是放在DataGrid外面,那么DataGrid1.Items[0].celss[0].Text 可以,不过必须后台赋值
如果是在DataGrid里面需要相应DataGrid的itembound事件,然后使用e.item.findconcle("text名")来操作

解决方案 »

  1.   

    <asp:datagrid id="DataGrid4" runat="server" AutoGenerateColumns="False" Width="732px">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    test
    </ItemTemplate> </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>
    DataGrid1.Items[0].celss[0].Text 取负给Label.Text可以得,但负到TextBox.Text不可以.为什私有这样?
      

  2.   

    asp:TemplateColumn>
    <ItemTemplate>
    <asp:Literal runat=server id=lt Text='<%# DataBinder.Eval(Container, "DataItem.id")%>'></asp:Literal>
    </ItemTemplate>
    cs:
    Literal aaa=(Literal)DataGrid1.Items[0].FindControls("lt");
    TextBox.text=aaa.Text;不能赋值TextBox,看是不是其它原因,比如赋了之后又改变了,或者赋值之后用下代码试一下页面有没显示;
    Response.Write(textbox.text);
      

  3.   

    to  qqdao(青青岛)如果是asp:label 或者asp:TextBox  是放在DataGrid外面,那么DataGrid1.Items[0].celss[0].Text 可以,不过必须后台赋值.什么意思,不明白,在外面的话. TextBox1.Text也可以拿到啦...<ItemTemplate><asp:Label Text="a" id="Id"></asp:Label></ItemTemplate>
    e.item.findconcle("id")这个我也知道.但我的DataGrid1里是这样写的
    ...<ItemTemplate>test</ItemTemplate>
    根本没有名字........
      

  4.   

    在.cs中写且输出TextBox.Text看看有没有内容
      

  5.   

    不好意思,你们可能不明白我说的
    asp:
    asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 264px; POSITION: absolute; TOP: 88px"
    runat="server" Width="248px" Height="232px" AutoGenerateColumns="False">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    abcd
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>
    cs:
    private void Page_Load(object sender, System.EventArgs e)
    {
    ArrayList al=new ArrayList();al.Add("test");
    DataGrid1.DataSource =al;
      DataGrid1.DataBind();
    TextBox1.Text =DataGrid1.Items[0].Cells[0].Text;
    Label1.Text =DataGrid1.Items[0].Cells[0].Text;
    }
    出来的效果是:Label1.Text显示abcd 而TextBox1.Text无显示.. 
      

  6.   

    还有一个问题,就是为什么一定要邦定ArrayList al=new ArrayList();al.Add("test");DataGrid1.DataSource =al;DataGrid1.DataBind();DataGrid才能显示出abcd
    DataGrid1.DataSource =new ArrayList();DataGrid1.DataBind();却什么也不显示.?????????不够分可以再加100分...
      

  7.   

    DataGrid1.DataSource =new ArrayList();DataGrid1.DataBind();却什么也不显示.?????????不够分可以再加100分...答:他的数据源是空的,所以什么也不显示 ,new ArrayList()不包含任何元素
    DataBind()的作用是调用.net内部的功能,从数据源中读出数据送给源控件。如果不调用此方法,什么动作都不会执行,就像你写了一个函数而没有调用一样。
      嘿嘿,看明白了吗?在加点分?^o^
      

  8.   

    xinbin1122(创造者...) 多谢..结贴后再给分你..
      

  9.   

    帮手睇下..前一问题..xinbin1122(创造者...)
      

  10.   

    ((Text)DataGrid1.Items[0].celss[0]).Text 没有进行类型转换是得不到值的
      

  11.   

    TO yao20047(龙) 能得到值的,你用label连就能得到啦.但用TextBox就不能.