2012-06-25 75 views
1

我在模板字段中有一個超鏈接。我想根據其值啓用和禁用超鏈接。假設Id"ABC"我想禁用超鏈接。我嘗試了下面的代碼,但它不適合我。如何啓用和禁用gridview中的超鏈接?

Enabled='<%# Convert.ToString(Eval("Id"))!= "ABC" ? true: false %>' 

我試着在後面的代碼如下:

protected void gridResult_RowDataBound(object sender, GridViewRowEventArgs e) { 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     HyperLink status = (HyperLink)e.Row.Cells[2].Controls[0]; 
     if (status != null && status.Text == "ABC") { 
      status.Enabled = false; 
     } 
    } 
} 

但它返回每次null

<asp:TemplateField HeaderText="Id"> 
         <ItemTemplate> 
          <% if (WebApp.Common.Auth.Admin()) { %> 
           <a href="../../Edit/Default.aspx?<%= WebApp.Edit.Default.P_ID %>=<%# DataBinder.Eval(Container.DataItem, "Id") %>&amp;r=<%= buildPostBackPortion() %>"><%# DataBinder.Eval(Container.DataItem, "Id") %> Enabled='<%# Convert.ToString(Eval("Id"))!= "ABC" ? true: false %>' 
</a> 
          <% } else { %> 
           <%# DataBinder.Eval(Container.DataItem, "Id") %> 
          <% } %> 
         </ItemTemplate> 
         </asp:TemplateField> 
+1

顯示完整的TemplateField請... – naveen

+0

納文,我更新了我的問題與templatefiled。請看一下。 – Ranjith

回答

2

當我需要你描述我用​​下面做一些事情:

ASPX:

<asp:TemplateField HeaderStyle-CssClass="cell-action" ItemStyle-CssClass="cell-action"> 
    <ItemTemplate> 
     <asp:HyperLink ID="viewHyperLink" runat="server" Text="View" /> 
     <asp:Label ID="messageLabel" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

C#:

protected void reportedIssuesGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{ 
    RowDataType row; 
    HyperLink viewHyperLink; 
    Label messageLabel; 

    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.DataItem is RowDataType) { 
     row = (RowDataType)e.Row.DataItem; 
     viewHyperLink = (HyperLink)e.Row.FindControl("viewHyperLink"); //Gets the HyperLink 
     messageLabel = (Label)e.Row.FindControl("messageLabel"); //Gets the Label 
     if (row.Id != "ABC") 
     { 
      viewHyperLink.Visible = true; 
      viewHyperLink.NavigateUrl = "~/Edit/Default.aspx?P_ID" + row.Id; 

      messageLabel.Visible = false; 

     } 
     else 
     { 
      viewHyperLink.Visible = true; 

      messageLabel.Visible = true; 
      messageLabel.Text = row.Id; 
     } 
    } 
} 

RowDataType是的名稱行數據的類型。

如果需要其他幫助或有其他問題,那麼請詢問。如果這解決了你的問題,那麼請接受。
FYI:25%的錄取率是非常糟糕的。你應該試着通過接受答案來解決問題。

更新:更改代碼以使用messageLabel。

+0

我是否需要添加任何引用inorder來使用RowDataType? – Ranjith

+0

@Ranjith'RowDataType'應該要綁定到GridView的數據類型來代替。例如,如果將一個字符串數組綁定到GridView,那麼'RowDataType'將被替換爲'string'。 – Trisped