2011-12-27 59 views

回答

2

随着绑定列和只读模式下可以使用GridView1.Rows[x].Cells[x].Text但编辑模式下,您必须使用控件集合得到控制的参考。此方法返回一个Control对象。

Control control=GridView1.Rows[x].Cells[x].Controls[0]; // later you may cast it to appropriate control class. 

如果模板字段使用,那么你必须发出从Cells收集FindControl方法,以获取基于其ID控制的参考。您也可以使用Cells[x].Controls集合。

Control control=GridView1.Rows[x].Cells[x].FindControl("ID_Of_Control"); // later you may cast it to appropriate control class. 

编辑:

这还可能的是可以有具有横跨模板列相同的名称/ ID的一个或多个控制。在这种情况下,您不能使用FindControl方法。

例子:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Button ID="Button1" runat="server" Text="Button" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Button ID="Button1" runat="server" Text="Button" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

我们获得按钮,并从第二行和第一小区改变其文本:

Button btn = GridView1.Rows[1].Cells[0].Controls[1] as Button ; 
if(btn!=null) 
    btn.Text = "Hello"; 
+0

嘿,thx,但我实际上应用此代码之前,它不工作...我使用模板字段fyi ...任何替代? – rofans91 2011-12-27 02:18:54

+0

@ Rofans.NET - 有两种方法可以从TemplateField单元格获取控件 - FindControl方法和Controls集合。 – adatapost 2011-12-27 02:24:48

+0

@AVD:'FindControl'找到控件而不会提取单元格索引,对吧? – naveen 2011-12-27 02:28:37

3

如果它是一个BoundField,你可以做

gv.Rows[1].Cells[1].Text; 

如果它是一个TemplateField,你必须得到有你想要的值控制。

Label L = gv.Rows[1].FindControl("yourcontrolId") as Label; 
L.Text; 
+1

我也试试这个代码..但它不工作...任何替代? – rofans91 2011-12-27 02:08:52

+0

它是一个TemplateField还是一个BoundField? – 2011-12-27 02:09:30

+0

TemplateField .. – rofans91 2011-12-27 02:10:59

相关问题