2011-06-28 40 views
2

問題:如何將FixHyperLink的可見性綁定到Label1具有非空文本值的條件?如何知道GridView的ItemTemplate中的服務器控件的id?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
    <Columns> 
     <asp:TemplateField HeaderText="Error" SortExpression="Error"> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("Error") %>'></asp:Label> 
       <asp:HyperLink ID="FixHyperLink" runat="server" NavigateUrl='<%# Bind("AppID", "~/da/Default2.aspx?appid={0}") %>'>Fix</asp:HyperLink> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

UPDATE:答案C#版本

 foreach (GridViewRow row in GridView1.Rows) 
     { 
      var l = (Label)row.FindControl("Label1"); 
      var h = (HyperLink)row.FindControl("FixHyperLink"); 
      h.Visible = !string.IsNullOrWhiteSpace(l.Text); 
     } 

回答

2

你必須確定你想改變則行的索引得到這樣的:

 Dim tempRow As System.Web.UI.WebControls.GridViewRow 
    Dim tempLabel As Label 
    Dim tempHyperlink As HyperLink 

    For Each tempRow In GridView1.Rows 
     tempLabel = CType(tempRow.FindControl("Label1"), Label) 
     tempHyperlink = CType(tempRow.FindControl("FixHyperLink"), HyperLink) 
     If tempLabel.Text.Trim <> String.Empty Then 
      tempHyperlink.Visible = True 
     Else 
      tempHyperlink.Visible = False 
     End If 
    Next 
2

您可以添加「 Visible ='<%#String.IsNullOrEmpty((string)Bind(「Error」))?false:true;「to the hyperlink標記

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
<Columns> 
    <asp:TemplateField HeaderText="Error" SortExpression="Error"> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text='<%# Bind("Error") %>'></asp:Label> 
      <asp:HyperLink ID="FixHyperLink" runat="server" NavigateUrl='<%# Bind("AppID", "~/da/Default2.aspx?appid={0}"%>') %>' Visible='<%# String.IsNullOrEmpty((string)Bind("Error")) ? false:true; %>' >Fix</asp:HyperLink> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

+0

也很好的瞭解,謝謝。 –

相關問題