我需要基於該行中另一列的值以編程方式禁用某個GridView中的某些超鏈接。我決定處理OnRowDataBound事件以在運行時迭代並設置它們。這大部分工作,除了我需要到HyperLink對象。我該怎麼做?從RowDataBound事件中獲取超鏈接對象
這裏就是我在
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
}
}
UPDATE 的轉換結果將不能正常工作。我收到一個關於無法將TableCell類型轉換爲Hyperlink的錯誤。 HyperLinkField沒有ID屬性。根據article,我將超鏈接字段更改爲模板字段,該字段本應以某種方式使其更容易,但不幸的是,該文章沒有說明......有什麼想法?
<asp:TemplateField HeaderText="Tracking">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("trackingUrl", "{0}") %>'
Text='<%# Eval("trackingNumber", "{0}") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
這可行,但您必須先將其轉換爲模板字段。有了Visual Studio,我只需進入設計視圖,只需點擊超鏈接即可「將字段轉換爲模板字段」。然後我有一個ID來引用我的HyperLink。 – 2011-01-20 17:59:45