Avatar billede websam Nybegynder
29. juni 2005 - 10:48 Der er 7 kommentarer og
2 løsninger

Dataview og søgning ?

Overskriften siger ikke det hele, men det jeg er ude efter er at vide hvordan jeg tjekker op på om der eksistere data udfra kriterierne i følgende :

Dim dv As DataView = New DataView
dv.Table = ProductBiz.CacheProduct().Tables("tbl_products")
dv.RowFilter = "getLanguage = '" & Session("SetLanguage") & "' And CatId = " & Request.QueryString("Id") & ""
dv.Sort = "Id ASC"
DataList1.DataSource = dv
DataList1.DataBind()

Jeg søger mit dataset igennem efter kategorier hvor id f.eks har nummer 5. Jeg skal nu tjekke op på om der findes nogle med id 5 og udfra det enten lave et link eller en label.

Altså hvis der er kategorier med id nummer 5 skal jeg lave en label ellers skal jeg lave et link.

Er der en der kan hjælpe mig igennem med dette ?

/Websam
Avatar billede websam Nybegynder
29. juni 2005 - 10:51 #1
Jeg glemte lige at sige at link/label skal vises i en dataliste :o)

/Websam
Avatar billede thomashove Nybegynder
29. juni 2005 - 11:11 #2
du kan bruge Datalist.OnitemDatabound Method

http://msdn2.microsoft.com/library/w88167x2(en-us,vs.80).aspx

OnitemDatabound trigger funktionen i din Codebehind ved hver linie (row) i dit dataset - og du kan her indsætte en label eller et link i din datalist alt efter behov
Avatar billede websam Nybegynder
29. juni 2005 - 11:16 #3
Er du venlig at vise mig et eksempel udfra ovenstående jeg kan ikke helt se i det link du sendte hvordan jeg lige tjekker op på om jeg har noget at vise fra mit dataset ?

/Websam
Avatar billede thomashove Nybegynder
29. juni 2005 - 11:17 #4
der findes masser af eksempler på hvorledes man benytter OnitemDatabound ved søgning på google. F.eks.

http://www.syncfusion.com/FAQ/aspnet/WEB_c14c.aspx
Avatar billede websam Nybegynder
29. juni 2005 - 12:01 #5
Ok det er fint nok og jeg kan oxo godt få det til at virke, men jeg forklaremig sikkert ikke godt nok så :o) Jeg har en tabel med produkter i denne tabel har jeg felterne Id, CatId, CatName og Prod.

Id = Autogenereret id nummer for hver katagori, underkategori og produkt
CatId = Id der fortæller underkategori el. produkt kategori der tilhøre "over idét"
Catname = Navn på kategori
Prod = Fortæller om det er en kategori eller et produkt 0 = kategori, 1 = produkt

Hvis jeg har et med en kategori at gøre som har underkategorier tilknyttet skal der blot vises en label, men hvis der ikke er nogen underkategori, men blot en række produkter ja så skal der laves et link så disse produkter kan vises. Jeg håber det hjælper lidt på forståelsen af hvad deter jeg vil :o)

/Websam
Avatar billede websam Nybegynder
29. juni 2005 - 12:11 #6
Det vil sige at der skal først søges efter om der er tilhørende underkategorier til den pågældende kategori (hvor Prod i min tabel er sat til 0) er dette tilfældet skal der laves en label med kategorinavnet ellers skal der laves et link til visning af produkter i den pågældende Underkategori.

/Websam
Avatar billede websam Nybegynder
29. juni 2005 - 13:02 #7
Gik du kold på det eller ?

/Websam
Avatar billede snepnet Nybegynder
02. juli 2005 - 12:33 #8
hej websam :o)

hvis du sørger for at sætte en placeholder ind i din repeater - der hvor link/label skal vises (f.eks. pnlCategory), så kan du i din

private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
  if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  {
    // panelet hvor kontrollen skal indsættes
    Panel panel = e.Item.FindControl("pnlCategory") as Panel;

    // datagrundlaget for rækken
    DataRowView rowView = e.Item.DataItem as DataRowView;

    // check om det er det ene eller ander der skal vises
    if(HasSubCategories(rowView)
    {
        // her indsættes så et link
        HyperLink hl = new HyperLink();
        hl.NavigateUrl = "...";
        hl.Text = "...";
        panel.Controls.Add(hl);
    }
    else
    {
        Label label = new Label();
        label.Text = "...";
        panel.Controls.Add(label);
    }
  }
}

private bool HasSubCategories(DataRowView rowView)
{
  // .... hvordan du nu checker det
}

.... var det sådan noget du var ude efter? (ellers må du lige give mig et vink :o)

mvh
Avatar billede websam Nybegynder
04. juli 2005 - 09:32 #9
Jeg har løst det ved at lave en Function der tæller om der er nogle tilhørende underkategorier i mit dataview hvis ikke så viser jeg link med kategoriens navn til en række produkter ellers viser jeg en label med kategoriens navn og lister så underkategorier. Og ind til videre virker det efter hensigten.

Mit problem var i første omgang at jeg har lavet uendelig niveauer som jeg skulle tjekke op på og det løste jeg ved at sætte et flag ved de records i min tabel der er produkter og ikke en kategori på den måde kan jeg tjekke op på om der er flere kategorier og hvis ikke skal jeg blot lave et link, men tak for inputtet snepnet ;o)

/Websam
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