Avatar billede musicchart.dk Nybegynder
13. juli 2006 - 12:27 Der er 13 kommentarer og
1 løsning

Repeater + checkBoxList

Kan man gøre følgende?

<asp:Repeater id="emneListe" runat="server">
    <HeaderTemplate>
        <asp:CheckBoxList id="CheckBoxList1" runat="server">
    </HeaderTemplate>
    <ItemTemplate>
        <asp:ListItem value="DATATBINDING VÆRDI"></asp:ListItem>
    </ItemTemplate>
    <FooterTemplate>
        </asp:CheckBoxList>
    </FooterTemplate>
</asp:Repeater>
Avatar billede musicchart.dk Nybegynder
13. juli 2006 - 13:08 #1
Fordi det kunne være genialt bare at kunne hente værdierne fra "CheckBoxList1".
Jeg fandt jo ud af at en alm. <asp:CheckBox kun kan være true/false - og ikke fx kan have en værdi på 21.
Avatar billede thomasofdenmark Nybegynder
13. juli 2006 - 15:31 #2
Nej, men du kan udfylde din checkBoxList fra codebehind-filen:

DEN NEMME (value bliver samme som tekstindhold):

myCheckBoxList.DataSource = SQL-query
myCheckBoxList.DataBind();


eller....(Her kan du selv styre value for den enkelte box)

SqlDataReader sdr = SQL-query

if(sdr.HasRows)
{
myCheckBoxList.Items.Clear();
for(int i = 0; i < 3; i++)
{
sdr.Read();
myCheckBoxList.Items.Insert(i, sdr["strChoice"].ToString());
myCheckBoxList.Items[i].Value = (i + 1).ToString();
}
Avatar billede musicchart.dk Nybegynder
13. juli 2006 - 15:47 #3
Ah ja selvfølgelig!
Men hvordan styrer man så, hvor den skal placeres? Jeg vil jo gerne have checkBoxen placeret i min ItemTemplate.
Jeg binder min Repeater til en ArrayList.

CODEBEHIND:

myRepeater.DataSource = myArrayList;
myRepeater.DataBind();

ASCX:

<asp:Repeater id="myRepeater" runat="server">
    <HeaderTemplate>
        <asp:CheckBoxList id="myCheckBoxList" runat="server"></asp:CheckBoxList>
    </HeaderTemplate>
    <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "EnProperty") %>
    </ItemTemplate>
</asp:Repeater>
Avatar billede thomasofdenmark Nybegynder
13. juli 2006 - 15:56 #4
Du behøver slet ikke en repeater.
Avatar billede musicchart.dk Nybegynder
13. juli 2006 - 16:13 #5
Okay, så lad mig vise hvad det er jeg vil.
Jeg vil have flg. gentaget (Repeatet):

<div class="listepunkt" onmouseover="style.backgroundColor='#c7c7ca';" onmouseout="style.backgroundColor='#FFFFFF';">
//HER SKAL CHECKBOXEN VÆRE, MED VALUE="<%# DataBinder.Eval(Container.DataItem, "id") %>"
<span style="CURSOR: pointer" onclick="location.href='#';">
<%# DataBinder.Eval(Container.DataItem, "UdskrivKort") %>
</span>
</div>


...hvordan gør jeg det, uden brug af repeater?
Avatar billede thomasofdenmark Nybegynder
13. juli 2006 - 16:38 #6
Altså du vil have en checkbox og et link umiddelbart efter?
Ja, der kommer jeg altså til kort. Sorry!
Avatar billede musicchart.dk Nybegynder
13. juli 2006 - 17:45 #7
Det kunne ellers have været frækt, hvis man kunne koble en ItemTemplate til en CheckBoxList... Er der virkelig ingen der har en løsning til mit problem?
Avatar billede musicchart.dk Nybegynder
13. juli 2006 - 19:00 #8
Jeg lader stadig denne tråd være åben.
Men har indset at jeg er nødt til at lave en stor del af mit design om - på baggrund af det.. (sikke noget P**)
Avatar billede snepnet Nybegynder
14. juli 2006 - 12:45 #9
Hvis du kun skal have vist én enkelt checkbox i dit repeateritem, synes jeg da bare du skal nøjes med at sætte én ind.
Har du behov for et sted at lægge et id - kan du bare klaske det i et hiddenfield ell.
Såh... En template som denne er vel god nok eller?
<div class="listepunkt" onmouseover="style.backgroundColor='#c7c7ca';" onmouseout="style.backgroundColor='#FFFFFF';">
<asp:HiddenField ID="hdnField" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "Id") %>' />
<asp:CheckBox ID="chkCheck" runat="server" />
<span style="CURSOR: pointer" onclick="location.href='#';"><%# DataBinder.Eval(Container.DataItem, "UdskrivKort") %></span>
</div>       

Og du kan så finde det i koden med:
foreach (RepeaterItem item in dinRepeater.Items)
{
    CheckBox cb = item.FindControl("chkCheck") as CheckBox;
    HiddenField hf = item.FindControl("hdnField") as HiddenField;
}

Er det ikke tilstrækkeligt?

Mvh
Avatar billede musicchart.dk Nybegynder
14. juli 2006 - 13:03 #10
Er der en WebControl der hedder "HiddenField" ?
Det vil min complier ikke rigtigt godtage.
Avatar billede snepnet Nybegynder
14. juli 2006 - 13:14 #11
Well... Det er der, men som servercontrol findes den kun i 2.0 - sorry.
Du kan bare benytte "html udgaven" istedet hvis du bruger 1.1:

<input id="hdnHtmlField" type="hidden" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "Id") %>' />

Og tilgå den sådan her fra koden:
HtmlInputHidden hfHtml = item.FindControl("hdnHtmlField") as HtmlInputHidden;

Mvh
Avatar billede musicchart.dk Nybegynder
14. juli 2006 - 13:25 #12
Jamen det er jo smukt.
Gid jeg havde vist det for et døgn siden :o)

Smider du et svar snepnet, så lukker jeg.
Avatar billede snepnet Nybegynder
14. juli 2006 - 13:38 #13
Kommer her :o)
- Husk også Thomas.
Mvh
Avatar billede musicchart.dk Nybegynder
14. juli 2006 - 14:02 #14
Yes - Thomas, kommer du også med et svar?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester