čitanje svojstva itema iz DataList gdje je checkBox checked

Item DataList kontrola mi se sastoje od više label kontrola i jedne CheckBox kontrole. Želja mi je da korisnik odabere do 10 CheckBox-a (checked) i da dodijelim string varijablama svojstvo text label i chackbox kontrola odabranih Itema.
Kroz primjer će biti jasnije. Trenutno pokušavam preko OnCheckedChanged događaja jedan po jedan Item, ali mislim da bi bilo bolje da korisnik najprije sve označi, a tek onda pročitam koji su čekirani i iz njih izvučem željene podatke. U ovom primjeru ne znam kako dalje jer je tekst svojstvo koje izvlačim iz Itema izgleda uvijek Null.

 Protected Sub DataListSmjestaj_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataListSmjestaj.ItemCreated
        If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
            ChbEmail = CType(e.Item.FindControl("ChbEmail"), CheckBox)
            AddHandler chbEmail.CheckedChanged, AddressOf chbEmail_CheckedChanged
        End If
    End Sub
    Protected Sub ChbEmail_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ChbEmail.CheckedChanged
        Dim chb As CheckBox = CType(sender, CheckBox)
        Dim item As DataListItem = DirectCast(chb.NamingContainer, DataListItem)
        If chb.Checked Then
            j = j + 1
' evo ovdje stane i javi grešku [B]System.NullReferenceException: Object reference not set to an instance of an object[/B].
            email(j) = DirectCast(DataListSmjestaj.Items(item.ItemIndex).FindControl("ChbEmail"), CheckBox).Text
            vlasnik(j) = DirectCast(DataListSmjestaj.Items(item.ItemIndex).FindControl("VlasnikLabel"), Label).Text
            id(j) = DirectCast(DataListSmjestaj.Items(item.ItemIndex).FindControl("IDLabel"), Label).Text
        Else

Ja bi to obicno radio da prodjem kroz sve retke liste (dataList.Items ili slicno, nemam pojma koji property daje retke/iteme), i onda FindControl svakog pojedinog checkboxa i provjera dali je checkiran. Sve to se desava u Click eventu jednog button koji bi se nalazio ispod liste.

A da ih moze odabrati max 10, to je vec sasvim druga prica. Za to ces morati mozda raditi postback nakon svakog checka, ili u javsacriptu odraditi tu provjeru.

evo pokušao sam ovako,ali opet ista pogreška

 Dim dli As DataListItem

        For Each dli In DataListSmjestaj.Items

            Dim cb As CheckBox = DirectCast(dli.FindControl("ChbEmail"), CheckBox)
            Dim lblVlasnik As Label = DirectCast(dli.FindControl("VlasnikLabel"), Label)
            Dim lblID As Label = DirectCast(dli.FindControl("IDLabel"), Label)
            If cb.Checked Then
                j = j + 1
                email(j) = cb.Text 'System.NullReferenceException: Object reference not set to an instance of an object.
                vlasnik(j) = lblVlasnik.Text 
                id(j) = lblID.Text 
            End If

        Next

Isto mi javlja i za vlasnik(j) kad maknem email(j).

Možda grešim u postavljanju ItemTemplate dataliste. Evo je dolje:

<ItemTemplate>
                   <img alt="Private accommodation" border="0" width="250" height="188" src="../../SLIKE/smjestaj/<%# Eval("ID") %>/velika.jpg" style="position: relative" /></a>
                 
                    <asp:CheckBox ID="ChbEmail" runat="server" Text='<%# Eval("Email") %>' BorderColor="#003366" BorderWidth="1px" OnCheckedChanged="ChbEmail_CheckedChanged" AutoPostBack="True" />

                    <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' Visible="false"></asp:Label>
                    <asp:Label ID="VlasnikLabel" runat="server" Text='<%# Eval("Vlasnik") %>' Visible="false"></asp:Label>
                </ItemTemplate>

Pokušao sam i preko ItemDataBound, opet ista greška :frowning:

Nisam radio u tome jeziku ili tehnologiji no radio sam u nečem sličnom i isto bi ti izbacilo error jer checkbox nema Text property.
cb.Value ti bi prošlo.

[quote=“gorrc”]Nisam radio u tome jeziku ili tehnologiji no radio sam u nečem sličnom i isto bi ti izbacilo error jer checkbox nema Text property.
cb.Value ti bi prošlo.[/quote]

Javlja grešku: ‘Value’ is not a member of ‘System.Web.UI.WebControls.CheckBox’.

Ima svojstvo text jer tom svojstvu mogu dodijelit string (radi), ali kad idem čitat javlja onu Null referencu. U listi onaj Item koji kliknem u kontroli CheckBox ima tekst.

Možda predlažete neki drugi način da pokupim željene podatke. Mogao bi direktno iz baze, ali opet ne znam kako da dođem do stringa id kako bi u sql-u odredio koji slog tražim

Jedino što mi još sine da je greška u ovom:
j = j + 1

Možda bi trebao definirati j.
Mislim da bi javascript izbacio grešku na tome, “j” is not defined ili tako nešto.

ono što meni pada na pamet kad preletim okom:
"If cb.Checked Then…"
zar ne bi trebalo biti “true” ili “false”.Po meni ovako nemaš uslova nikako:
"If cb.Checked=true Then…"
Probaj ništa te ne košta

Provjeri dali je dataListItem.ItemType == ListItemType.Item ili ListItemType.AlternatingItem. Zato sto u kolekciji Items imas header red, pager, footer, tko zna sta jos.

[quote=“gorrc”]Jedino što mi još sine da je greška u ovom:
j = j + 1

Možda bi trebao definirati j.
Mislim da bi javascript izbacio grešku na tome, “j” is not defined ili tako nešto.[/quote]
Gorrc je riješio problem. j sam definirao, ali nisam dobro deklarirao array-eve.

Sad radi ok, iako me nervira što se nakon svakog odabira CheckBoxa stranica prikazuje od vrha pa korisnik (posjetioc) mora uvjek skrulat do zadnje pregledanog Itema

HVALA SVIMA

[quote=“vinko”] nervira što se nakon svakog odabira CheckBoxa stranica prikazuje od vrha pa korisnik (posjetioc) mora uvjek skrulat do zadnje pregledanog Itema

HVALA SVIMA[/quote]

dodaj u stranica.aspx <%@ Page … MaintainScrollPositionOnPostback=“true” %>

ovo je super tnx


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja