Asp: метка не отображается, когда для параметра visible установлено значение true? - PullRequest
4 голосов
/ 10 февраля 2009

У меня есть простая веб-форма, в которой есть пара списков и кнопка поиска. Когда кнопка нажата, она возвращает DataSet. Если набор данных содержит записи, я устанавливаю asp: label, для которого изначально установлено значение false, но этого не происходит. Если в наборе данных есть записи, а для свойства visible установлено значение true, метка все равно не отображается.

Я также попытался поместить метку и несколько других элементов управления в html-таблицу и установить атрибут runat = "server" в таблице и изменить видимость этого, но он также не отображается.

Вот код aspx:

<table>
    <tr>
        <td>
        <asp:Label ID="lblSortBy" runat="server" Text="Sort By:" Visible="false">   
        </asp:Label>
        <asp:DropDownList
                        ID="ddlSortBy" 
                        runat="server" 
                        AutoPostBack="True" 
                        OnSelectedIndexChanged="ddlSortBy_SelectedIndexChanged">
        <asp:ListItem Value="Gross">Gross</asp:ListItem>
        <asp:ListItem Value="Population">Population</asp:ListItem>
        </asp:DropDownList>
        </td>
    </tr>
</table>

Вот упрощенный код при нажатии кнопки:

public void GetData()
{
    DataView dv = GetReportData().DefaultView;

    if(dv.ToTable().Rows.Count > 0)
     {
        lblSortBy.Visible = true;
     }
     else
     {
        lblSortBy.Visible = false;
     }
  }

У меня есть пара панелей обновления вокруг нескольких списков и GridView, но нет ярлыка и раскрывающегося списка. Это вызвало бы проблему?

Я провел тест, установил метку, которая была на панели обновлений, в значение false, если записи были найдены, и метка исчезла, поэтому он работает, если он находится на панели обновлений.

Ответы [ 6 ]

5 голосов
/ 11 февраля 2009

Если я не ошибаюсь, ваша метка должна существовать на панели обновлений, потому что, что касается статической HTML-страницы, единственный раз, когда ваша текущая метка существует, она установлена ​​как невидимая. Вам придется перезагрузить всю страницу, чтобы она снова стала видимой.

4 голосов
/ 11 февраля 2009

Если кнопка находится внутри UpdatePanel, то таблица, метка и т. Д. Также должны быть внутри UpdatePanel для обновления. В противном случае при нажатии кнопки обновляется только содержимое UpdatePanel (это называется частичное отображение страницы ).

Так что, если кнопка находится в UpdatePanel, у вас есть две возможности решить проблему:

  1. поместите таблицу, метку, DropDownList и т. Д. В одну и ту же панель обновления
  2. или поместите их в другую UpdatePanel и установите для UpdateMode этого свойства значение Always, чтобы оно обновлялось, даже если обратная передача была инициирована элементом управления в другой UpdatePanel.

Подробнее см. на этой странице в MSDN .

0 голосов
/ 05 марта 2014

спасибо, это действительно полезно, поместите Lable в панель обновления.

        <ContentTemplate>
       <table>
           <tr>
                <td>
                     <asp:LinkButton ID="LinkNM" runat="server" Text="Learn>" BackColor="Transparent" style=" color: #6699FF;text-decoration-color:none;border:none;font-size:x-large" OnClick="LinkNM_Click"/>
                    &nbsp;&nbsp;&nbsp;
                                  <asp:Label ID="lblChapterName"  runat="server" BackColor="Transparent" style=" color: #6699FF;text-decoration-color:none;border:none;font-size:x-large" ></asp:Label>

                                </td>
           </tr>
       </table>
             </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnFileUpload" />
        </Triggers>

    </asp:UpdatePanel>
0 голосов
/ 10 февраля 2009

Если таблица изменяется видимой и является родительским контейнером метки, я не думаю, что необходимо вообще менять видимость метки, так как она всегда должна быть видимой.

0 голосов
/ 10 февраля 2009

Я предполагаю, что вы также будете скрывать ddl, если нет данных. Вы пытались установить панель вокруг них и установить ее видимость на true

если вы возвращаете строки, и ваша кнопка находится в панели обновления, тогда ваша метка и ddl также находятся в этой панели обновления

0 голосов
/ 10 февраля 2009
  • Вам просто нужно запустить runat = "server" на самой метке; хотя Visible должен по умолчанию True.
  • Убедитесь, что вы добавили ForeColor, чтобы не смешивать его с фоном.
  • Отладка, чтобы убедиться, что ваша метка содержит контент, и она не находится в другом элементе управления, Visible = False.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...