Avatar billede mikkel_sommer Nybegynder
27. september 2006 - 09:54 Der er 15 kommentarer og
1 løsning

Styre layoutet i en placeholder

Hej Eksperter

Hvordan styre jeg layoutet af controls i en placeholder.
Mit problem er at jeg har en liste af objekter. Disse objekter har en property som indeholder en labelværdi og en som angiver hvilken type af control der skal oprettes.

Det ønskede layout kunne eksempelvis se således ud:

Label - textBox
Label - comboBox
Label - textBox

osv.....

så det jeg har brug for er at controls'ne kommer parvis under hinanden.

Håber nogen kan hjælpe.
Avatar billede snepnet Nybegynder
27. september 2006 - 11:03 #1
Du kan bruge en repeater, en datalist eller et datagrid (gridview hvis du benytter 2.0).
Den kan du så klaske ind i din placeholder.
Mvh
Avatar billede mikkel_sommer Nybegynder
27. september 2006 - 13:36 #2
Hej snepnet kunne du give et kort eksempel på brugen af en repeater?
Avatar billede snepnet Nybegynder
01. oktober 2006 - 17:17 #3
Jo - det kan jeg da godt.

Her en repeater der viser dig navne:
<asp:Repeater ID="someRepeater" runat="server" >
    <ItemTemplate>
        <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label><br />
    </ItemTemplate>           
</asp:Repeater>

Og du kan så vise en liste af personer i den sådan her:

if(!IsPostBack)
{
  List<Person> persons = GetPersons();
  someRepeater.DataSource = persons;
  someRepeater.DataBind();
}

Person skal som klasse så have en public property ved navn Name.
Præsentationen fikser du med templates i din repeater - og du kan lave det som du har lyst til.

Du kan self. også benytte de DataSource controls der findes i forbindelse med en repeater.

Spørg løs hvis der er noget du er i tvivl om.

Mvh
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 12:41 #4
Ja det er også nogen lunde det jeg kunne se i en bog jeg kiggede i men jeg endte dog med at sætte 2 panels i item templaten og så i min codebehind add'e mine controls til disse panels.

Dette giver mig dog imidlertid et problem i de tilfælde at mine controls skal være af typen radiobuttons. Hvis jeg add'er hver enkelt radiobutton til mit panel kan jeg ikke unchecke dem hvis jeg først har sat dem checked. Jeg går udfra at det skyldes at den opfatter hver enkelt radiobutton som en group for sig selv og at der i hver group skal være en checked. Derfor har jeg prøvet at smide dem ind i en radiobuttonlist og så tilføje den til mit panel, men så bliver intet vist. Har en anelse om at det er fordi at når jeg add'er til mit panel skal typen der add'es være en control og radiobuttonlisten er en type for sig selv.

Nogen forslag til hvorledes jeg kommer udover dette?
Avatar billede snepnet Nybegynder
02. oktober 2006 - 12:57 #5
Du kan bare sætte samme groupname på dem - eller bruge en radiobuttonlist.
En radiobuttonlist er skam en kontrol ... Må jeg se den kode der gør at du ikke får listen at se?
Mvh
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 13:02 #6
Dim pnControl As Panel = e.Item.FindControl("pnControls")


Dim ds As DataSet = Matchwork.BLL.bllSql.executeSql(configArray(1).Replace("sql:", ""))
                For Each dr As DataRow In ds.Tables(0).Rows
                    Dim radioButton As System.Web.UI.WebControls.RadioButton = New System.Web.UI.WebControls.RadioButton
                    radioButton.ID = "rb" & objDynRef.drNumber & dr(0)
                    radioButton.Text = dr(1)
                    If dr(0) = configArray(0) Then
                        radioButton.Checked = True
                    End If
                    rbList.Controls.Add(radioButton)
                Next
                pnControl.Controls.Add(rbList)
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 13:04 #7
Hov fik ikke lige disse med:

Dim config As String = objDynRef.typeDef
            Dim configArray As String() = config.Split(New Char() {"|"})
            Dim rbList As RadioButtonList = New RadioButtonList
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 13:08 #8
objDynRef.typeDef ser i det tilfælde jeg tester med således ud:

328431679|sql:select id, overskrift from table1 where ekstern_id = 'mso'
Avatar billede snepnet Nybegynder
02. oktober 2006 - 13:11 #9
Du skal bare gøre det, at du opretter et ListItem for hver række i din data, og så tilføjer det ListItem til listens ItemCollection:

RadioButtonList list = new RadioButtonList();
ListItem item = new ListItem("blah");
list.Items.Add(item);
pnControl.Controls.Add(list);

Mvh
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 13:22 #10
Super cool snepnet, smid et svar :)
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 13:27 #11
bare lige en biting hver af mine panels ligger i en td som har class defineret for at få tekster i rette størrelse og skrifttype, hvorfor virker det ikke længere(virkede dengang jeg fik dem som hver sin group)
Avatar billede snepnet Nybegynder
02. oktober 2006 - 13:42 #12
Din radiobuttonlist renderes normalt som en tabel - så det er nok der problemet ligger.
Mvh
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 13:58 #13
Ok - men hvordan bærer jeg mig så ad med at få sat style på mine items?
Avatar billede snepnet Nybegynder
02. oktober 2006 - 14:15 #14
Jeg er ikke den store stylist ... kan du ikke bare tilføje de nødvendige styles til din radiobuttonlist.
Mvh
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 14:44 #15
Min fejl havde en taste fejl der hvor jeg satte style på listen
Avatar billede mikkel_sommer Nybegynder
02. oktober 2006 - 14:44 #16
Tak for hjælpen :)
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