ASP.NET Panel FindControl в DataList для изменения свойства C # - PullRequest
0 голосов
/ 25 мая 2010

Я новичок в этом материале ASP.NET. На моей странице есть Datalist с шаблоном FooterTemplate. В нижнем колонтитуле у меня есть несколько панелей, которые будут видны в зависимости от QueryString. Проблема, с которой я сталкиваюсь, - попытаться найти эти панели в Page_Load, чтобы изменить Видимое свойство. Есть ли способ найти этот элемент управления в Page_Load? Например, это часть страницы aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
 <asp:DataList ID="dlRecords" runat="server">
  <FooterTemplate>
   <asp:Panel ID="pnlArticleHeader" runat="server" Visible="false" >
   </asp:Panel>
  </FooterTemplate>
 </asp:Datalist>
</asp:Content>

Вот что-то в коде:

protected void Page_Load(object sender, EventArgs e)
    {
        location = Request.QueryString["location"];
        if (location == "HERE")
        {
          Panel pnlAH = *Need to find control here*;
          pnlAH.Visible=true;
         }
      }

Как я и сказал, я новичок в этом. Все, что я нашел, похоже, не работает, поэтому я решил опубликовать конкретный вопрос. Заранее спасибо

1 Ответ

0 голосов
/ 25 мая 2010

DataList имеет событие OnItemCreated, переопределение позволяет выбрать тип строки:

  Panel _pnlArticleHeader;
  void Item_Created(Object sender, DataListItemEventArgs e)
  {

     if (e.Item.ItemType == ListItemType.Footer)
     {

        _pnlArticleHeader =(Panel)e.Item.FindControl("pnlArticleHeader");
      }

  }

После вызова события в поле: _pnlArticleHeader вы получите нужную панель. Этот способ безопасен, так как создан только один раз. НОТА! таким же образом для обычной строки DataList будет возвращаться только последний.

...