Avatar billede thomas_regin Nybegynder
27. november 2003 - 10:59 Der er 11 kommentarer og
1 løsning

Hvordan griber jeg det an?

Hejsa !

I en C# web form læser jeg en prisliste i XML ind i et dataset. Herefter vil
jeg gerne præsentere disse priser med en checkbox, en checkbox.text og prisen!

Eksempel:
[x] Mit produkt        €4000
[x] Endnu et          €3000
Osv...

Problemet er, at jeg ikke bare kan bruge checkboxList, fordi jeg skal være istand til at enable/disable at runtime, og det understøtter ListItems ikke, så vidt jeg kan se. Jeg kan heller ikke umiddelbart bruge en repeater, da det ikke er alle rows fra mit dataset, som skal med!

Er der nogle forslag til hvordan man kan gribe dette an?

På forhånd tak,

Thomas Regin.
Avatar billede odegaard Nybegynder
27. november 2003 - 11:42 #1
Det kan gøre med en template i et DataGrid
Avatar billede odegaard Nybegynder
27. november 2003 - 11:43 #2
Eller du kan som du selv siger bruge en repeater. Du kan blot lave et dataview af dit dataset, hvor du filtrerer de "forkerte" rækker fra.
Avatar billede thomas_regin Nybegynder
27. november 2003 - 11:44 #3
Hej Odegaard,

Kan du evt. gi' et eksempel? Jeg er stadig rimeligt uerfaren når det gælder Web forms.

Mvh,

Thomas Regin.
Avatar billede thomas_regin Nybegynder
27. november 2003 - 11:48 #4
Odegaard,

Problemet med at bruge repeater er, at hver eneste node i mit dataset skal evalueres. F.eks:

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DataRow d = ds.Tables[0].Rows[i];
                if (d["man"].ToString() == "" && d["main"].ToString() == "" && Convert.ToInt16(d["Available"].ToString()) > 0 && Convert.ToInt16(d["Available"].ToString()) <= SolType)
                {
// Check checkboxen hvis ovenstående returnerer true
// etc. etc. etc.

Jeg kan derfor ikke fra starten sortere for meget i det. Ihvertfald ikke umiddelbart!

Mvh,

Thomas.
Avatar billede odegaard Nybegynder
27. november 2003 - 11:51 #5
Det er så det du har OnItemBound eventet til.
Avatar billede odegaard Nybegynder
27. november 2003 - 11:52 #6
Hvis du kan stille din filtrering om som en typisk SQL where clause, så kan du gøre det ret simpelt med at lave et dataview.
Avatar billede odegaard Nybegynder
27. november 2003 - 11:57 #7
Fx. hvis du vil checke for om checkbox'en skal sætte, kan du i dit OnItemDataBound event skrive:

public void MyDataGrid_OnBind(object o, DataGridItemEventArgs e)
{
  if((ListItemType)e.Item.ItemType == ListItemType.Item || (ListItemType)e.Item.ItemType == ListItemType.AlternatingItem)
  {
      CheckBox check = (CheckBox)e.Item.FindControl("myCheckBox");
      if(Convert.ToInt16((DataRowView)e.Item.DataItem)["Available"].ToString())<= SolType)
      {
        check.Checked=true;
      }
  }
}
Avatar billede odegaard Nybegynder
27. november 2003 - 12:00 #8
Ex. på tilhørende datagrid (princippet er det samme med repeatere):
<asp:DataGrid id="MyDataGrid" runat="server" autogeneratecolumns="false" onitemdatabound="MyDataGrid_OnBind">
  <columns>
      <asp:templatecolumn headertext="Show">
        <headertemplate>
        </headertemplate>
        <itemtemplate>
            <asp:checkbox id="myCheckBox" runat="server" checked="true" />
        </itemtemplate>
        <footertemplate/>
      </asp:templatecolumn>
      <asp:boundcolumn headertext="<b>Man</b>" datafield="man"/>
  </columns>
</asp:datagrid>
Avatar billede thomas_regin Nybegynder
27. november 2003 - 12:05 #9
Odegaard,

Indtil videre tusinde tak for hjælpen!.. Jeg er næsten sikker på, at dette er det helt rigtige!.. Jeg prøver det lige af og vender tilbage! :)

Thomas.
Avatar billede thomas_regin Nybegynder
27. november 2003 - 12:20 #10
Odegaard,

Fantastisk !!.. Det var jo lige præcis det jeg søgte efter! :)

Du skal ha' en milliard gange tak for hjælpen, og naturligvis dine velfortjente points!

Endnu engang tak!

Thomas.
Avatar billede thomas_regin Nybegynder
27. november 2003 - 12:20 #11
Hov.. Du skal lige svare!
Avatar billede odegaard Nybegynder
27. november 2003 - 12:26 #12
ok :-)
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