2011-12-27 30 views

答えて

2

と読み取り専用モードでは、あなたはGridView1.Rows[x].Cells[x].Textを使用することができますが、編集モードを使用すると、コントロールの参照を取得するためにControlsコレクションを使用する必要があります。このメソッドはControlオブジェクトを返します。テンプレートのフィールドが使用されている場合

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

は、あなたはそのIDに基づいてコントロールの参照を取得するためにCellsコレクションからFindControlメソッドを発行する必要があります。 Cells[x].Controlsコレクションも使用できます。

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

EDIT:

はTemplatefieldsで同じ名前/ IDを有する1つ以上のコントロールが存在し得ることも可能です。その場合は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> 

ボタンを取得し、第二行1セルからそのテキストを変更するには:

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

ねえ、thxしかし、私は実際に前にこのコードを適用し、それは動作していない...私はテンプレートフィールドfyiを使用しています...任意の代替? – rofans91

+0

@ Rofans.NET - TemplateFieldセルのFindControlメソッドとControlsコレクションからコントロールを取得する方法は2つあります。 – adatapost

+0

@AVD:そして 'FindControl'は、セルインデックスを調停することなくコントロールを見つけます。 – naveen

3

あなたは

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

を行うことができ、あなたが望む価値を持っているコントロールを取得する必要があります。 BoundFieldで

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

私はこのコードを試してみました..しかし、それは働いていない...任意の代替? – rofans91

+0

TemplateFieldまたはBoundFieldですか? –

+0

TemplateField .. – rofans91

関連する問題