私の質問タイトルはかなり簡単だと思います。それはBoundFieldだ場合は、TemplateFieldならすべてのヘルプは高く評価されGridViewのセル値を取得する行と列のインデックスのみを知る
..
私の質問タイトルはかなり簡単だと思います。それはBoundFieldだ場合は、TemplateFieldならすべてのヘルプは高く評価されGridViewのセル値を取得する行と列のインデックスのみを知る
..
と読み取り専用モードでは、あなたは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";
ねえ、thxしかし、私は実際に前にこのコードを適用し、それは動作していない...私はテンプレートフィールドfyiを使用しています...任意の代替? – rofans91
@ Rofans.NET - TemplateFieldセルのFindControlメソッドとControlsコレクションからコントロールを取得する方法は2つあります。 – adatapost
@AVD:そして 'FindControl'は、セルインデックスを調停することなくコントロールを見つけます。 – naveen