3

プログラムでにを追加しようとしButtonFieldていGridViewます。

したがって、aspxでは次のようになります。

<asp:ButtonField ButtonType="Image" 
                 CommandName="buttonClicked" 
                 ImageUrl="~/checkdailyinventory.bmp" />

これは、C#で複製しようとしたものです。

 GridView genGridView = new GridView();

        //Where the xml gets bonded to the data grind
        XmlDataSource xds = new XmlDataSource();
        xds.Data = xml;
        xds.DataBind();
        xds.EnableCaching = false;


        genGridView.DataSource = xds;
        genGridView.DataBind();


        // formating is done here

        ButtonField test3 = new ButtonField();
        test3.ButtonType = ButtonType.Image;
        test3.CommandName = "buttonClicked";
        test3.ImageUrl = "~/checkdailyinventory.bmp";
        genGridView.Columns.Add(test3);

これにより、新しい列は作成されません。ヘルプが表示されます。

更新の進捗状況

列を作成できましたが、これらは最初の列であり、最後の列ではありません。これを行うには、ボタンを作成し、データバインディングの前に列を追加する必要がありました。

GridView genGridView = new GridView();

        //Where the xml gets bonded to the data grind
        XmlDataSource xds = new XmlDataSource();
        xds.Data = xml;
        xds.DataBind();
        xds.EnableCaching = false;

        //Set the rowdatabound before binding.  This will allow the correct function to be called.
        genGridView.RowDataBound += new GridViewRowEventHandler(inventoryGridView_RowDataBound);
        genGridView.RowCommand += new GridViewCommandEventHandler(inventoryGridView_RowCommand);

        ButtonField test3 = new ButtonField();
        test3.ButtonType = ButtonType.Image;
        test3.CommandName = "buttonClicked";
        test3.ImageUrl = "checkdailyinventory.bmp";

        genGridView.Columns.Add(test3);
        genGridView.DataSource = xds;
        genGridView.DataBind();

また、すべての変数が正しく設定されていても、ボタンは実際には何も実行できませんが、一度に1ステップずつ推測します。

マイナー編集:

ボタンが機能しない理由がわかったと思います。HTMLでは、次のようになります。

<td><input type="image" src="checkdailyinventory.bmp" onclick="javascript:__doPostBack('inventoryGridView','buttonClicked$2')" style="border-width:0px;" /></..>

実際には次のようになります。

<td><input type="image" src="checkdailyinventory.bmp" onclick="javascript:__doPostBack('ctl03','buttonClicked$2')" style="border-width:0px;" /></..>

ct103だから私はどのように置き換えるかを理解する必要がありますinventoryGridView

4

1 に答える 1

0

コードビハインドで genGridView を作成しているようですが、ページに追加していないようです。

マークアップで定義されている GridView を収集します。その場合は、行を削除してみてください

GridView genGridView = new GridView(); 

ページ上のオブジェクトに列を追加できるはずです。

ヒント: おそらく OnInit (または OnInit から呼び出されるメソッド) にも項目を追加する必要があります。

于 2012-06-18T20:34:59.363 に答える