用的是模板列,一页显示N行数据,都是label
怎么找到第一行和最后一行的数据值?
急!!!

解决方案 »

  1.   

    e.Item.Cells[0].FindControl("labelID")
    e.Item.Cells[7].FindControl("labelID")索引为控件在模块列中的位置也可以的
    e.Item.Cells[0].Controls[0]
      

  2.   

    DataGridItem dgi = YourDataGrid.Items[0];
    Label l = (Label)dgi.FindControl("lblID");dgi = YourDataGrid.Items[YourDataGrid.Items.Count-1];
    l = (Label)dgi.FindControl("lblID");
      

  3.   

    在邦定事件写:private void projectinfo_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {

    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)

     if(e.Item.ItemIndex ==1) 
     string youstring = e.Item.Cells[0].FindControl("labelID");}
    }
      

  4.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=60B8B07E-A3DF-4AE5-B5F8-71204C7C8793
      

  5.   

    string NeedIfo = ((Label)e.Item.FindControl("lblID")).Text
      

  6.   

    假设DataGrid的第一列声明如下
    <asp:HyperLinkColumn DataTextField="au_id" HeaderText="au_id" DataNavigateUrlField="au_id" DataNavigateUrlFormatString="Edit.aspx?id={0}"></asp:HyperLinkColumn>
    读取的时候可以用:
    //Items[0]表示第一行,Cells[0]表示第一列,Controls[0]表示Cell中的第一个控件(也只有这个控件可以用)
    HyperLink link = (HyperLink)DataGrid1.Items[0].Cells[0].Controls[0]);
    Response.Write(link.Text);
    至于模板列(TemplateColumn),当然也可以通过DataGrid1.Items[i].Cells[j].Controls[n]来获取,然后转换成原来的控件类型再操作,但是还有个更好的办法,就是用FindControl来查找控件。
    FindControl是System.Web.UI.Control的方法,可以根据子控件ID来查找子控件
    比如:
    假设DataGrid的某一列声明如下
    <asp:TemplateColumn>
       <ItemTemplate>
          <asp:TextBox Runat="server" ID="txtID" Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>'>
          </asp:TextBox>
       </ItemTemplate>
    </asp:TemplateColumn>
    读取方法:
    TextBox txt = (TextBox)DataGrid1.Items[1].FindControl("txtID");
    Response.Write(txt.Text);