以编程方式添加按钮列

时间:2012-06-18 19:40:22

标签: c# asp.net gridview webforms

我正在尝试以编程方式向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();

即使我已正确设置了所有变量,按钮也无法实际执行任何操作,但我猜是一步一步。

次要编辑:

我想我弄清楚按钮无法正常工作的原因。在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

1 个答案:

答案 0 :(得分:0)

看起来你在后面的代码中创建了genGridView,但没有将它添加到你的页面。

我收集GridView是在标记中定义的。如果是这样,请尝试删除该行

GridView genGridView = new GridView(); 

您应该能够将列添加到页面上的对象中。

提示:您可能还需要在OnInit(或从OnInit调用的方法)中添加项目。