2011-07-03 18 views
-2

私は2つの列を持っていますが、行を作成するたびにcontroまたは2つを動的に追加するにはどうすればいいですか?コントロールをグリッドビューに動的に追加するにはどうすればよいですか?

また、動的に列を作成したいと思います。

どのように達成できますか?

+0

あなたはどういう意味ですか - **私は動的に列を動的に作成したいですね。 –

答えて

5

コントロールを追加する列にPlaceHolderコントロールを配置します。そして、GridViewコントロールのRowDataBoundイベントの編集1プレースホルダ

をコントロールを追加

内のaspxであなたのグリッド列は次のようになります。 -

<Columns> 
<asp:TemplateField HeaderText="Column1"> 
    <ItemTemplate> 
     <asp:PlaceHolder runat='server' ID="column1PlaceHolder"></asp:PlaceHolder> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Column2"> 
    <ItemTemplate> 
     <asp:PlaceHolder runat='server' ID="column2PlaceHolder"></asp:PlaceHolder> 
    </ItemTemplate> 
</asp:TemplateField> 
</Columns> 

あなたのRowDataBoundイベントは次のようになります。 -

public void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (column1NeedsControls) 
    { 
     PlaceHolder placeHolder = e.Row.FindControl("column1PlaceHolder") as PlaceHolder; 
     TextBox TextBox1 = new TextBox(); 
     placeHolder.Controls.Add(TextBox1); 
    } 

    if (column2NeedsControls) 
    { 
     PlaceHolder placeHolder = e.Row.FindControl("column2PlaceHolder") as PlaceHolder; 
     TextBox TextBox1 = new TextBox(); 
     placeHolder.Controls.Add(TextBox1); 
    } 
} 
+0

したがって、各行にはテキストボックスが追加されます。私は2つの列を持っていますが、どのように配置するべきかを知るにはどうすればよいですか?2つのコントロールを1つの列に配置し、別のコントロールを別の列に配置したい –

+0

'placeHolder.Controls.Add'メソッドをあなたが望むように多くのコントロール。同様に、2つの列がある場合は、各列にプレースホルダーを配置する必要があり(明らかに2つの異なるIDを持つ)、同じ作業を行う必要があります。 –

+0

しかし、どのようにして2番目の列や最初の列にアクセスするのですか..イベントは任意の行が追加されたときにトリガされます..なぜ私はイベントが必要ですか?/ ..どのように私はそれを引き起こすのです –

関連する問題