2

その場でコードから GridView の textBox のようなコントロールを追加したいと思います。

私のプロジェクトでは、行と列の数を決定できないというグリッドが 1 つあります。私はそれにDataSourceを与えるだけです。これはうまくいきます。

GridView G = new GridView();
G.DataSourse = dt;
G.DataBind();

今、私はそのテキストボックスに書き込むことができるように、Gridviewすべてのコントロールがコントロールであるようにしたいと考えています。Textbox

TextBox t= new TextBox();
G.Contorls.Add(t);

これは例外をスローします...

誰かこれについて何か考えがありますか???

前もって感謝します..

よろしくアミット・ビアス

4

3 に答える 3

1

ItemTemplate を使用して設計時に実行してみませんか

   <asp:GridView ID="GrdDynamic" runat="server">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox runat="server" ID="Name" Text='<%#Eval("Name") %>'></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

編集

これは、テンプレート列を動的に追加することに関する興味深い CodeProject の投稿です。

于 2012-05-10T05:25:35.697 に答える
0

このhttp://www.devasp.net/net/articles/display/708.htmlリンクを確認し、以下のコードを使用してください。

 DropDownList ddl = new DropDownList();

        ddl.Visible = true;

        ddl.ID = "ddl1";

        ddl.Items.Add("Item1");

        TableCell cell = new TableCell();      

        gv.Rows[0].Cells.Add(cell);

        gv.Rows[0].Cells[0].Controls.Add(ddl);
于 2012-05-10T05:37:56.387 に答える
0

既存の GridView に TextBox を動的に追加する方法を探している場合は、GridView の RowDataBound イベントを使用するのが最善の解決策です。

ItemTemplate フィールドに PlaceHolder コントロールを追加します。

 <asp:GridView ID="GrdDynamic" runat="server" OnRowDataBound="GridView_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:PlaceHolder runat='server' ID="PlaceHolder1"></asp:PlaceHolder>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

public void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    //find placeholder control
    PlaceHolder placeHolder = e.Row.FindControl("PlaceHolder1") as PlaceHolder;

    TextBox TextBox1 = new TextBox();
    placeHolder.Controls.Add(TextBox1);      
}
于 2012-05-10T05:41:33.657 に答える