DataList a UpdatePanel - hlasování   zodpovězená otázka

ASP.NET WebForms

Chtěl bych na těchto stránkách

http://skmpostrava.aspone.cz/VyberLoga.a...

vytvořit hlasování, ale nevím jak to v DataListu provést.

Idea je, jeden záznam by byl obalen v UpdatePanelu a po kliknutí na tlačítko PridejHlas, by se přidal hlas do DB a v PocetHlasu by se zobrazil aktuální počet hlasů.

Pomůže někdo?

Na stránkách, které zobrazují data viz. URL nemám ještě umístěy prvky UpdatePanel, PocetHlasu, PridejHlas

<asp:DataList ID="DataList" runat="server" DataKeyField="IDLogo" RepeatDirection="Horizontal" RepeatColumns="4">
<ItemTemplate>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <table class="TabVyberLogaSKMP" align="left">
        <tr>
            <td class="TabObr">
                <asp:HyperLink ID="HyperLink2" runat="server" Target="_blank"
            ImageUrl='<%#Eval("ObrazekNahled")%>' 
            NavigateUrl='<%#Eval("ObrazekNormal")%>'>HyperLink</asp:HyperLink>

            </td>
        </tr>
        <tr>
            <td class="TabAutor">Autor: <%#Eval("Autor")%></td>
        </tr>
        <tr>
            <td class="TabAutor">Obrázek číslo: <%#Eval("IDLogo")%></td>
        </tr>
        </table>
        <asp:Label ID="PocetHlasu" runat="server" Text="0"></asp:Label>
        <asp:Button ID="PridejHlas" runat="server" Text="Button" OnCommand="PridejHlas" />
        
    </ContentTemplate>
    </asp:UpdatePanel>
</ItemTemplate>
</asp:DataList>
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevim kcemu teda potrebujete datalist, ale idea by se mohla ubirat treba takto:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:RadioButtonList ID="Radio_Anketa" runat="server">
                    <asp:ListItem Text="Prvni varianta" Value="0" />
                    <asp:ListItem Text="Druha varianta" Value="1" />
                    <asp:ListItem Text="Treti varianta" Value="2" />
                </asp:RadioButtonList>
                <br /><asp:Label ID="Label1" runat="server" /><br />
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
             </Triggers>
        </asp:UpdatePanel>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Hlasuj" />

Label1.Text = "Vybral jste: " & Radio_Anketa.SelectedItem.ToString()

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím, tohle je použitelné, pouz pokud se data negeneruji z DB. Já ty obrázky zobrazuji z DB, takže problém je, že nějakým způsobem potřebuji unikátní jméno pro tlačítka a labely vně UpdatePanelu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravim,

Tak sem se teda seznamil na vasich strankach s vasim problem :x

add 1]

Unikatni id k Labelu a ostatnim controls v Update Panelu mate, protoze je mate v DataListu (Datalist1_ctl00_Label1 , Datalist1_ctl01_Label1, Datalist1_ctl02_Label1 atd ...)

add 2]

Predchozi priklad je samozrejme pouzitelny i s daty z DB. Ve vasem pripade jsou tam samozrejme drobnejsi zmeny. Priklad je na repeatru s daty z DB.

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <div>
                        idFoto:
                        <%#Eval("idPhoto")%></div>
                    <br />
                    <div>
                        Pocet Hlasu:
                        <%#Eval("Hlasy")%></div>
                    <br />
                     <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%#Eval("idPhoto")%>' CommandName="update">hlasuj</asp:LinkButton>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Repeater1" EventName="ItemCommand" />
                </Triggers>
            </asp:UpdatePanel>
           
        </ItemTemplate>
    </asp:Repeater>

    Protected Sub Repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater1.ItemCommand

      If e.CommandName = "update" Then

      ' UPDATE command celkovych Hlasu

      ' SELECT command celkovych Hlasu + databind      
      
      End If

    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na ID ve tvaru Datalist1_ctl00_Label1 se nikdy nespoléhejte, nikde není definováno, že budou vypadat zrovna takhle. Pokud chcete zjistit ID labelu ve stránce v nějaké položce DataListu, dá se to udělat tímto kódem:

DataList1.Items(0).FindControl("Label1").ClientID

Nechápu ovšem, k čemu bude unikátní ID komponenty potřeba.

Jinak i komponenta RadioButtonList se dá tuším odkázat na datový zdroj, takže můžete položky v RadioButtonListu vytahovat z databáze také. Stačí jí nastavit SqlDataSource klasicky přes vlastnost DataSourceID a pár dalších vlastností (myslím, že se jmenují DataTextfield a DataValueField, jistý si ale nejsem).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback