Findcontrol в элементе списка - PullRequest
       25

Findcontrol в элементе списка

1 голос
/ 08 февраля 2012

У меня есть следующий код в itemtemplate:

 <asp:ListView ID="ListView1" runat="server">
            <ItemTemplate>

  <asp:HiddenField Value='<%# checkCatName(Eval("CatName")) %>' runat="server" />
           ........
   <asp:Label runat="server" id="lblBla" Visible="false"> ... </asp:Label>

      </ItemTemplate>
</asp:ListView>

Код сзади (C #):

public void checkCatName(object CatName)
{
    Label bla = (Label)ListView1.FindControl("lblBla");


    if (CatName.ToString() == "test1")
        bla.Visible = true;


    return CatName.ToString();

}

Я получаю значение NULL - как страница не находит ярлык "бла".

Где я не прав?

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Если у listview есть событие itemdatabound, вы можете использовать его, чтобы найти элемент управления и сделать с ним все, что вам нужно. В следующем коде предполагается, что в шаблоне элемента списка есть скрытое поле с id = "myhiddenfield"

//this goes inside your listview's itemdatabound event
HiddenField myhiddenfield = new HiddenField();
myhiddenfield = (HiddenField)e.Item.FindControl("myhiddenfield");

//get or set hidden field value here.
int myID = Convert.ToInt32(myhiddenfield.Value);
1 голос
/ 08 февраля 2012

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

Страница не сможет найти этот элемент управления напрямую.

Надеюсь, это поможет.

...