如何在后面的代码中更改<asp:buttonfield type =“Image”>上的图像?</asp:buttonfield>

时间:2012-06-28 22:04:16

标签: asp.net

我有一个<asp:GridView ><asp:ButtonField ButtonType="Image">作为其中一列。

问题在于:我必须根据在特定gridview行中找到的数据,在gridView_RowDataBound(...)事件期间动态更改此ButtonField的图像。

真正的问题是,如何访问gridView_RowDataBound(...)事件中的特定ButtonField,以便我可以用C#代码更改其图像?

我无法使用

Image imgCtrl = (Image)args.Row.FindControl("ctrlID");

因为<asp:ButtonField>不允许设置ID(当我尝试运行webPage时会出现解析器错误)。我无法使用

args.Row.Cells[0].Controls[0];

因为.Controls [0]的第0个索引不存在(我遇到边界溢出错误)。

必须有一个简单,灵活,简单的方法来做到这一点!

1 个答案:

答案 0 :(得分:2)

快速示例:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DataRowView drv = (DataRowView)e.Row.DataItem; 
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TableCell tableCell = e.Row.Cells[3]; // Column 3 in the grid have the Image Button 
            foreach (var control in tableCell.Controls)
            {
                if (control.GetType() == typeof(System.Web.UI.WebControls.ImageButton)) ;
                {
                    ImageButton iButton = control as ImageButton;
                    iButton.ImageUrl = "/Logo.jpg";
                }
            }
        }
    }