for (int i = 0; i < DataGrid1.Items.Count; i++)
{
DataGrid1.Items[i].Cells[0].Text = i.ToString();
}

解决方案 »

  1.   

    int n=this.DataGrid1.EditItemIndex;
    TextBox box=(TextBox)DataGrid1.Items[n].Cells[i].Controls[0];
    box.Text=="";
      

  2.   

    在DataGrid1_ItemDataBound中
    e.item.cells(x).text
    表示每行的某列
    如果要分别取某行某列则需要循环了
      

  3.   

    bluefish922,如果分别取某行某列要怎么做,我要的就是这样形式的。
      

  4.   

    to:icyer() 
    我用了你的方法后,可以更改他的值,可却无法取到,我一加上225行那句话他就报错,错误信息如下:System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名:index
    源错误: 
    行 223:DataGrid_1.Items[i].Cells[2].Text = i.ToString();
    行 224:}
    行 225: Label1.Text = DataGrid_1.Items[0].Cells[2].Text;
     
      

  5.   

    to:icyer() 
    我写了如下代码:DataGrid_1.DataBind();int i,j;
    for (i=0; i<DataGrid_1.Items.Count;i++)
    {
      for(j=0;j<ds_code.Tables["Code_Speciality"].Rows.Count;j++)
      {
       if(DataGrid_1.Items[i].Cells[2]  == ds_code.Tables["Code_Speciality"].DefaultView[j]["Id"].ToString())
       {
         DataGrid_1.Items[i].Cells[2].Text = ds_code.Tables["Code_Speciality"].DefaultView[j]["Name"].ToString();
         break;
       }
      }
    }我跟踪了一下DataGrid_1.Items[i].Cells[2]的值,始终是空的,这是为什么呀?
      

  6.   

    如果你用的是模板列的话,就不要直接读取Cell的Text属性,而是用FindControl找出里面的控件,然后在读取这个控件。
      

  7.   

    To icyer:可以说的具体一点吗? 怎么样  findcontrol?
      

  8.   

    DataGrid_1.Items[i].Cells[2]的值,始终是空的这可能与DataGrid_1的ViewState有关
      

  9.   

    可我如果改成:
    for (i=0; i<DataGrid_1.Items.Count;i++)
    {
     DataGrid_1.Items[i].Cells[2].Text = ds_code.Tables["Code_Speciality"].DefaultView[100]["Name"].ToString();
    }
    却可以对DataGrid_1.Items[i].Cells[2].Text 赋值,为什么可以赋值却不能取值啊??
      

  10.   

    难以想象。
    或者你先贴出DataGrid的结构代码,也就是:
    <asp:DataGrid ....>
    ...
    </asp:DataGrid>
      

  11.   

    <asp:datagrid id="DataGrid_1" runat="server" PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" AutoGenerateColumns="False" PageSize="20" AllowPaging="True" Font-Names="宋体" Font-Size="12px" AlternatingItemStyle-BackColor="#eeeeee" width="100%">
    <Columns>
    <asp:BoundColumn DataField="No" HeaderText="信息编号" ItemStyle-Wrap="False">
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" width="15%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="Coiid" HeaderText="单位代码" ItemStyle-Wrap="False">
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" Width="1%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    </asp:BoundColumn>
    <asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="No" DataNavigateUrlFormatString="../interface/postwhole.aspx?id={0}" DataTextField="Type" SortExpression="No" HeaderText="岗位名称" ItemStyle-Wrap="False">
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" width="35%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    </asp:HyperLinkColumn>
    <asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="Coiid" DataNavigateUrlFormatString="../interface/companywhole.aspx?Coiid={0}" DataTextField="Coiid" SortExpression="No" HeaderText="单位名称" ItemStyle-Wrap="False">
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" width="34%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    </asp:HyperLinkColumn>
    <asp:BoundColumn DataField="RegDate" HeaderText="登记日期" ItemStyle-Wrap="False" DataFormatString="{0:yyyy-MM-dd}">
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" Width="15%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    </asp:BoundColumn>
    </Columns>
    </asp:datagrid>因为“岗位名称”取到的是代码,我要把他的代码值取出来,然后做处理后再赋值回去,现在的问题就是只能赋值但却不能取值。BTY:真是麻烦icyer()你了,谢谢先
      

  12.   

    在onItemCreated事件里面写:
    if e.item.cells.count=i then
      ctype(e.item.controls(i),tablecell).text=value
    end if
      

  13.   

    难怪。
    for (int i = 0; i < DataGrid_1.Items.Count; i++)
    {
    HyperLink link = (HyperLink)DataGrid_1.Items[i].Cells[2].Controls[0];
    Response.Write(link.Text + "<br>");
    }
      

  14.   

    不过还有个问题,我改成下面这样以后,这个列上面的超连接功能却没有了,这是为什么呀?HyperLink link;for (i=0; i<DataGrid_1.Items.Count;i++)
    {
    link = (HyperLink)DataGrid_1.Items[i].Cells[2].Controls[0];
    for(j=0;j<ds_code.Tables["Code_Speciality"].Rows.Count;j++) {
    if(link.Text  == ds_code.Tables["Code_Speciality"].DefaultView[j]["Id"].ToString())
    {
    DataGrid_1.Items[i].Cells[2].Text = ds_code.Tables["Code_Speciality"].DefaultView[j]["Name"].ToString();
    break;
    }
    }
    }
      

  15.   

    不要直接给DataGrid_1.Items[i].Cells[2].Text赋值,而是赋值给link:
    link.Text = ds_code.Tables["Code_Speciality"].DefaultView[j]["Name"].ToString();
      

  16.   

    这下是真的圆满了,谢谢icyer()。
    结帖。