1

列の 1 つとしてa<asp:GridView ><asp:ButtonField ButtonType="Image">あります。

問題は次のとおりgridView_RowDataBound(...)です。特定のグリッドビュー行で見つかったデータに基づいて、イベント中にこの ButtonField の画像を動的に変更する必要があります。

本当の問題は、イベント内でその特定の ButtonField にアクセスしてgridView_RowDataBound(...)、C# コードでそのイメージを変更できるようにする方法です。

使えない

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

ID の設定が許可されないため<asp:ButtonField>です (webPage を実行しようとするとパーサー エラーが発生します)。しかも使えない

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

.Controls[0] の 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 に答える