Как узнать идентификатор серверного элемента управления внутри ItemTemplate GridView? - PullRequest
2 голосов
/ 29 июня 2011

ВОПРОС: Как связать видимость FixHyperLink с условием, что Label1 имеет непустое текстовое значение?

<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>

ОБНОВЛЕНИЕ: версия ответа 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 ]

2 голосов
/ 29 июня 2011

Вы можете добавить " Visible = '<% # String.IsNullOrEmpty ((string) Bind (" Error "))? False: true; </em>" в тег гиперссылки

<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>

2 голосов
/ 29 июня 2011

Вы должны определить индекс строки, которую хотите изменить, и получить ее следующим образом:

        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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...