漏了一点,我要获取的是单元格的的文本内容,不是web控件的

解决方案 »

  1.   

    因为你的Cells[0]中有控件。只有Cell中没有子控件且确实有内容的时候,你的方法才可以获得值。一般而言(除非自定义的模板列),一个Cell中只有一个子控件,所以你可以试试:Response.Write(myDG.Items[0].Cells[0].Controls[0].Text);这里,myDG.Items[0].Cells[0].Controls[0]是一个Control类型的对象,没有属性Text,所以上面的代码会报告编译错误。你可以判断一下这个控件是什么类型,然后再强制转换。一般而言(除非自定义的模板列),这个控件是Label控件,所以你可以试试:Response.Write((myDG.Items[0].Cells[0].Controls[0] as Label).Text);
      

  2.   

    如果在datagrid有了<edititem>列了,在其中有textbox控件后,怎么获得了?上面的行不通的
      

  3.   

    private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string name=((TextBox)e.Item.Cells[2].Controls[0]).Text.ToString().Trim();
    }
      

  4.   

    value=MydataGrid.items(MyDataGrid.CurrentCell)
      

  5.   

    试试Findcontrol方法e.Item.FindControl("Descript") as Label ).Text;
      

  6.   

    你的Cells[0] 第一列可能是模板列,比如放置了其它控件,如果这样的话你就要用findcontrol来进行查找了,如果不是模板列,是不会出这问题的(也有可能刚好你这一列没有数据显示出来,是"")
      

  7.   

    以上各位所说的情况我都试过了,还是不行
    我要获取的是单元格里的文本内容,而不是web控件的文本内容,有FindControl的肯定第一时间排除
    其中triout所说的Cells[0]中肯定有内容
    在代码中Response.Write(myDG.Items[0].Cells[0].Controls.Count);显示的结构是1,但我里面确实没有放置子控件,且不是模板列,为什么呢
      

  8.   

    <asp:HyperLinkColumn DataNavigateUrlField="pb_id" DataNavigateUrlFormatString="carsbrandinfo.aspx?pb_id={0}"
    DataTextField="pb_name">
    <HeaderStyle Width="67%"></HeaderStyle>
    </asp:HyperLinkColumn>
    这个算不算是子控件啊,如果是,那哪些属于非子控件呢,由于初学,概念有些模糊,请指教,谢谢