1

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

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

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

我无法使用

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

因为<asp:ButtonField>不允许设置 ID(当我尝试运行网页时出现解析器错误)。而且我不能使用

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

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

必须有一个简单、巧妙、简单的方法来做到这一点!

4

1 回答 1

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";
                }
            }
        }
    }
于 2012-06-28T23:12:38.860 回答