我需要以编程方式根据行中另一列的值禁用gridview中的某些超链接。我决定处理OnRowDataBound事件来迭代并在运行时设置它们。这主要是有效的,除了我需要到达HyperLink对象。我该怎么做?
这是我在哪里
protected void IncomingTransfersGv_RowDataBound(object sender, GridViewRowEventArgs e)
{
// COLUMN OFFSET IN USE
if (e.Row.RowType == DataControlRowType.DataRow)
{
object[] dataitems = ((DataRowView)e.Row.DataItem).Row.ItemArray;
string carrier = (string)dataitems[7].ToString();
if (carrier.ToLower() == "hand")
(dataitems[8] as HyperLink).Enabled = false;//How can I get the hyperlink object here? dataitems[8] only gives me the column's value..I don't need this
}
}
更新 转换无效。我收到一个错误,无法将类型TableCell转换为超链接。 HyperLinkField没有ID属性。根据{{3}},我将超链接字段更改为模板字段,这应该会以某种方式使这更容易,但不幸的是文章没有说明如何...任何想法?
<asp:TemplateField HeaderText="Tracking">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("trackingUrl", "{0}") %>'
Text='<%# Eval("trackingNumber", "{0}") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:1)
尝试搜索控件。
HyperLink hl = (HyperLink)e.Row.FindControl(ControlName)
答案 1 :(得分:0)
尝试
var hyperLink = (HyperLink)e.Row.FindControl(e.Row.Cells[8].Text)