Hej, Nja, känns inte så himla effektivt nä. Vet inte riktigt hur du har gjort i repeatern men från höften borde du kunna göra nåt i den här stilen (pseudokod typ). Jovisst, så kan man göra, men då krävs fler fält i databasen (ett boolean på om SpecialInformation ska visas eller inte). Hej Jonas, Varför behöver du fler fält i databasen för det?Optimering av BindData() i en repeater
Jag arbetar en del med repeaters som jag behöver customiza väldigt mycket. Ibland blir det såhär:
With ph_Permissions_rep_SetPermissions
.DataSource = DS.Tables(0)
.DataBind()
For intI = 0 To .Items.Count - 1
aLabel = CType(.Items(intI).FindControl("lbl_SpecialInformation"), Label)
If aLabel.Text <> "" Then
.Items(intI).FindControl("a_SpecialInformation").Visible = True
.Items(intI).FindControl("chk_Special").Visible = True
End If
aLabel = CType(.Items(intI).FindControl("lbl_WriteInformation"), Label)
If aLabel.Text <> "" Then
.Items(intI).FindControl("a_WriteInformation").Visible = True
.Items(intI).FindControl("chk_Write").Visible = True
End If
aLabel = CType(.Items(intI).FindControl("lbl_ID"), Label)
aControl = New DALControls
aControl.LoadControl(CType(aLabel.Text, Int32))
CType(.Items(intI).FindControl("chk_Read"), CheckBox).Checked = aControl.UserReadPermission(CType(ph_Choose_clst_Personel.SelectedValue, Int32))
CType(.Items(intI).FindControl("chk_Write"), CheckBox).Checked = aControl.UserWritePermission(CType(ph_Choose_clst_Personel.SelectedValue, Int32))
CType(.Items(intI).FindControl("chk_Special"), CheckBox).Checked = aControl.UserSpecialPermission(CType(ph_Choose_clst_Personel.SelectedValue, Int32))
Next
End With
Jag undrar om detta är det enda sättet att göra customizeringar på? Det känns inte speciellt effektivt? Det känns som om ASP är både snabbare och mer strukterat vid sådana här tillfällen?
Jag förstår att det är svårt att förstå koden, men det jag vill visa är sättet jag gör på. Exempelvis används FindControl och enkla If-satser mot en label för att avgöra om ett annat element ska vara synligt eller inte.
Några tips, anmärkningar eller idéer?
Sv: Optimering av BindData() i en repeater
<asp:label id="lbl_specialinformation" text='<%# Container.DataItem("specialinformation") %>'></asp:label>
<asp:hyperlink id="a_specialinformation" visible='<%# Container.DataItem("specialinformation") <> "" %>'>länk</asp:hyperlink>
Det här gäller iaf de två första grejerna du gör (det med aLabel)... Testa iaf, kan nog ge mer och bättre information imorrn om det krävs.Sv:Optimering av BindData() i en repeater
Det kanske är bättre att lägga all VB-kod i .aspx-sidan, och därigenom sätta värden så som jag vill ha dem?
Går vanlig ASP snabbare (där man skriver all VB-kod i asp-sidan?) när man gör som jag har gjort ovan?Sv: Optimering av BindData() i en repeater
har du kollat nått på Template controllerna för Repeater controllen?
Just presentation av data kan i början kännas mer knöligt än hur det var i vanliga ASP men så fort man känner till alla olika sätt brukar man lätt hitta det som passar sina problem bäst och där har du då fler allternativ än vad du hade i vanliga ASP.
Mvh JohanSv: Optimering av BindData() i en repeater
Du gör ju i princip samma koll i din repeater genom att du lägger in visible='<%# Container.DataItem("specialinformation") <> "" %>' i de kontroller som ska visas eller inte visas beroende på vad fältet specialinformation i databasen innehållerm, utan att behöva loopa igenom hela repeatern från början till slut från code behind.
Eller hur lägger du in text i din label som heter lbl_SpecialInformation? Kan du skicka repeaterns utseende också?