---
title: "dropdownlista i varje item i en dataview"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/167473-dropdownlista-i-varje-item-i-en-dataview"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "inspiro"
published: "2007-12-20T08:31:48.000Z"
updated: "2007-12-21T09:27:50.000Z"
replies: 4
views: 420
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/167473-dropdownlista-i-varje-item-i-en-dataview"
---

# dropdownlista i varje item i en dataview

## #1 — inspiro, 2007-12-20T08:31Z

Hej! Har en dataview där varje rad innehåller en dropdownlista som ska fyllas med samma värden för varje rad (dock kan innehållet variera mellan olika personer/dagar).Nu gör jag ett db-anrop för varje item när jag binder min dataview, men eftersom innehållet på varje rad ska vara samma så känns det ju himla onödigt. Skulle vilja göra ett enda db-anrop och sedan återanvända det i alla rader, men hur gör man det?

Permalänk: https://www.webforum.nu/p/167473

## #2 — CatZ, 2007-12-20T10:30Z

Jag förstår vad du menar, var tvungen att lösa det i ett tidigare projekt. Jag postar lösningen direkt konverterad till C# men jag är inte säker på att det är bästa sättet. Vill bara visa hur man kan göra för att återanvända ett datatable på hela sidan.

```
public DataView myOrderDetailsView;
public DataTable OrderRows { 
    get { 
        DataTable tmpOrderRows; 
        int i; 
        DataRow dr; 
        
        if (Session("MyOrderRows") == null) { 
            tmpOrderRows = new DataTable(); 
            
            // first load -- prepopulate with some data 
            // if this is a new order then populate with blank records 
            if ((Request.QueryString("Orderid") == "NewOrder") | (NewOrderRequested) | (Request.QueryString("Orderid") == "")) { 
                tmpOrderRows.Columns.Add(new DataColumn("Qty", typeof(string))); 
                tmpOrderRows.Columns.Add(new DataColumn("Description", typeof(string))); 
                tmpOrderRows.Columns.Add(new DataColumn("GLCodeID", typeof(string))); 
                tmpOrderRows.Columns.Add(new DataColumn("UnitPrice", typeof(double))); 
                tmpOrderRows.Columns.Add(new DataColumn("Taxid", typeof(string))); 
                tmpOrderRows.Columns.Add(new DataColumn("TotalPrice", typeof(double))); 
                tmpOrderRows.Columns.Add(new DataColumn("OrderID", typeof(string))); 
                tmpOrderRows.Columns.Add(new DataColumn("OrderDetailID", typeof(string))); 
                
                // Add 5 blank lines 
                for (i = 1; i <= 5; i++) { 
                    dr = tmpOrderRows.NewRow(); 
                    tmpOrderRows.Rows.Add(dr); 
                } 
            } 
            
            else { 
                // this is an existing order 
                tmpOrderRows = myUtils.dbDataView("SELECT OrderDetailID, OrderID, Qty, Description, GLCodeID, Price As UnitPrice, (Price * Qty) AS TotalPrice, Taxid FROM tblOrderDetails where ORderid=" + Request.QueryString("orderid")).Table; 
                dr = tmpOrderRows.NewRow(); 
                tmpOrderRows.Rows.Add(dr); 
                dr = tmpOrderRows.NewRow(); 
                tmpOrderRows.Rows.Add(dr); 
            } 
            // Save either table to the Session Variable 
            Session("MyOrderRows") = tmpOrderRows; 
            return tmpOrderRows; 
        } 
        else { 
            return Session("MyOrderRows"); 
        } 
    } 
}
```

Permalänk: https://www.webforum.nu/p/2062270

## #3 — CatZ, 2007-12-20T10:58Z

Ja just det så för att binda till din ddl så anropar du ju bara (i mitt fall) 

```
myOrderDetailsView = OrderRows.DefaultView;
```

Permalänk: https://www.webforum.nu/p/2062276

## #4 — inspiro, 2007-12-21T08:22Z

Tack för tipset! Jag har gjort samma nu men använder viewstate istälelt för sessions, inbillar mig att det är lite mer resurssnålt:

```
if (ViewState["PeriodNames"] == null)
{
  Database db = new Database();
  ViewState["PassNames"] = db.GetDataTable("GetPassNames");
}

DropDownList PassDDL = ((DropDownList)e.Item.FindControl("PassDDL"));
PassDDL.DataSource = ViewState["PassNames"];
```

Kommentera gärna koden om jag gör nåt knas. :)

Permalänk: https://www.webforum.nu/p/2062410

## #5 — CatZ, 2007-12-21T09:27Z

Det är ungefär samma sak fast jag tar för givet att det är bättre att använda viewstate. Anledningen till att jag använde sessions var att jag behövde spara det mellan flera olika sidor och inte hade en aning om hur viewstate funkade när jag skapade koden ;)

Permalänk: https://www.webforum.nu/p/2062420

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/167473-dropdownlista-i-varje-item-i-en-dataview
