Błąd: ,,Odwołanie do obiektu nie zostało ustawione na...

0

Kod w aspx.cs:

Label LabelHelp = (Label)DataList1.FindControl("max_id");
            LabelMax.Text = LabelHelp.Text;

Kod w aspx:
<asp:Label ID="LabelMax" runat="server" Text="Label"></asp:Label>

Pojawia się błąd:
Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

Dlaczego?

0

jesteś pewien, że to:
Label LabelHelp = (Label)DataList1.FindControl("max_id");
Ci coś zwraca ?

0
ID="LabelMax"
FindControl("max_id")

Nie widzę tu żadnej konsekwencji. Może jednak używać tego samego ID?

0

Nie, tu nie chodzi o ID. Ono ma być różne bo mam dwie różne kontrolki. Ta z ID="max_id" znajduje się w kontrolce DataList.

A jak zapisać to:
Label LabelHelp = (Label)DataList1.FindControl("max_id");
aby coś zwróciło??

Chodzi mi o to aby w jakiś sposób pobrać wartość Label'a z DataList o Id="max_id". Albo przynajmniej przypisać do innego Labela w tym przypadku do ID="LabelHelp"??

0

A w którym momencie to robisz?
Bo podejrzewam, że takie coś trzeba robić w obsłudze jakiegoś zdarzenia z DataList, np. ItemCommand albo ItemDataBound.

0
 <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" Width="354px">
        <ItemTemplate>
            MaxId:
            <asp:Label ID="max_id" runat="server" Text='<%# Eval("id_oferty") %>' />
        </ItemTemplate>
 </asp:DataList>

<asp:Button ID="Button1" runat="server" OnClick="showUser" Text="Pokaż label" Width="106px" />

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:bazaConnectionString %>" 
      SelectCommand="select * from OFERTA where id_oferty in(select max(id_oferty) from OFERTA)"> 
</asp:SqlDataSource>

    <asp:Label ID="LabelUser" runat="server" Text="Label"></asp:Label>
    <asp:Label ID="LabelMax" runat="server" Text="Label"></asp:Label>
0

Plik aspx:

...
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" Width="354px" OnItemDataBound="Item_Bound">
<ItemTemplate>
            MaxId:
            <asp:Label ID="max_id" runat="server" Text='<%# Eval("id_oferty") %>' />
        </ItemTemplate>
 </asp:DataList>
...

Plik aspx.cs:

...
void Item_Bound(Object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Label LabelHelp = (Label)e.Item.FindControl("max_id");
        this.LabelMax.Text = LabelHelp.Text;
    }
}
...

Może tak?

0

kasman, zwroc uwage, ze DATALIST ma ITEMTEMPLATE.. to oznacza, ze moze tam byc pierdyliard kontrolek o id "max_id". template mogl-i-musial zostac odpalony po razie dla kazdego itema w DataList'cie.. to juz wystarczajacy powod aby FindControl tamto sie nie udawalo, inna sprawa, ze do zawartosci wygenerowanej z template'a dostac sie ciezko - trzeba szukac dokladnie w miejscu odpalenia template'a. nikt inny nie wie, ze cokolwiek kiedykolwiek z tego template'a powstalo

1 użytkowników online, w tym zalogowanych: 0, gości: 1