GridView - > SQL的数据绑定。 FindControl对象引用未设置为RowDataBound中的实例

时间:2012-08-16 13:36:54

标签: c# sql gridview rowdatabound

我正在尝试更改其中一个列以显示图片而不是文字。该文本目前全部来自SQL。

            if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRow dr = ((DataRowView)e.Row.DataItem).Row;

            HyperLink EditLink = (HyperLink)e.Row.FindControl("EditLink");
            EditLink.NavigateUrl = "javascript:ShowDialogTest('2','" + dr[0].ToString() + "')";
            HyperLink DeleteLink = (HyperLink)e.Row.FindControl("DeleteLink");
            DeleteLink.NavigateUrl = "javascript:ShowDialogTest('3','" + dr[0].ToString() + "')";

            System.Web.UI.WebControls.Image i = (System.Web.UI.WebControls.Image)e.Row.FindControl("Overall Status");
            i.ImageUrl = "url";

        }

所以EditLink和DeleteLink都在ASP中,这些都有效。 [总体状态]是SQL中的一个字段,我无法将其更改为图像。

我认为可能是因为它还没有绑定数据所以无法找到该字段,但我显示了FindControls的计数,其中= SQL结果+ 2个字段。

接下来我觉得可能是我的..FindControl(THISNAME)错了。但是我不知道如何找到控件的名称。它必须类似于e.Row.Controls [index] .Name(我知道索引)或其他东西,但我无法弄清楚要采取什么属性。

谢谢,

1 个答案:

答案 0 :(得分:1)

这通常在GridView的RowCreated方法中完成(或者至少我这样做),就像我在RowDataBound上知道的那样,你只有行的数据但是它还没有存在于页面上,要在一行中找到一个控件,请使用e.Row.Cells[X].FindControl("ControlName")

希望这会有所帮助......