---
title: "Hämta data via klass"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/71005-hämta-data-via-klass"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Web-Tor"
published: "2003-03-13T15:02:16.000Z"
updated: "2003-03-15T18:19:04.000Z"
replies: 12
views: 395
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/71005-hämta-data-via-klass"
---

# Hämta data via klass

## #1 — Web-Tor, 2003-03-13T15:02Z

Jag har **två** celler i en vanlig HTML-tabell.

Varje cell innehåller en *asp:label* som ska fyllas med text.

Jag har en klass (Content) som hämtar texten via en annan klass (Database).

Just nu så hämtar jag en cell i taget med den här koden: (jag visar bara koden för att hämta den första cellen)
**Aspx-sidan »**

```
Content page = new Content();
Cell1Label.Text = page.Cell1("node");
```

 

**Content.cs »**

```
public class Content
{
	public string Cell1(String nodeID)
	{
		Database db = new Database();
		DataSet ContentDS = db.getDataSet("SELECT columnCell1 FROM tableContent WHERE columnID=" + nodeID + "");

		DataView Source = ContentDS.Tables[0].DefaultView;
		string text = Source[0][" columnCell1"].ToString();
		return text;
	}
}
```

Det måste finnas nåt sätt att hämta båda cellerna på en gång? Så att jag slipper ställa två frågor till databasen.

Jag skulle alltså vilja ha en funktion i Content-classen som heter Cell1_and_Cell2

Är ni med?

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

## #2 — NETwork, 2003-03-13T15:42Z

Javisst, se till ditt object "page" innehåller en collection av något slag med de värden du behöver använda så behöver du bara göra en instans av objectet. Alltså, istället för att returnera en väldigt specifik sträng så kan du ju returnera hela ditt dataset (eller en arraylist eller vad du nu finner lämpligt).

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

## #3 — NETwork, 2003-03-13T15:44Z

Tips, att använda ett helt dataset för en ynklig liten sträng är nog overkill va... ;)

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

## #4 — Web-Tor, 2003-03-13T15:46Z

Jag är med på tankesättet.
Jag har försökt att returnera ett dataset med får det inte att funka. :(
Men vad gäller C# så är jag tyvärr inte lika snabb i tangentbordet som jag är i huvudet. :l

/r En arraylist går snabbare eller?

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

## #5 — icaaq, 2003-03-13T15:48Z

JAg vet inte om dettta är rätt men jag har gjort följande vid liknande situationer.
Classen Content har en Construktor så när den initieras så hämtas värdena Cell1 och Cell2 mha en DataReader och dessa värden placeras i variabler, som sedan kan hämtas som vanligt, typ så här

```
[red]
Content page = new Content() //här initieras classen och värdena fylls på
Cell1Label.Text = page.Cell1;
Cell1Label.Text = page.Cell2;
[/red]
```

Kanske inte den bästa förklaringen......men....jag återkommer...

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

## #6 — NETwork, 2003-03-13T15:53Z

Du returnerar ett dataset (om du nu ska ha det) på samma sätt, men sedan måste du naturligtvis också ta emot och använda objektet som ett dataset.

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

## #7 — icaaq, 2003-03-13T15:55Z

Men är jag helt fel ute om jag postar denna kod:

```
[red]
	public class Content
	{
		private string _cell1;
		public Content()
		{
			//Hämtar datat mha datareader
			_cell1 = datareader["C1"].ToString();
		}
		public string Cell1
		{
			get
			{
				return _cell1;
			}
		}
	}
[/red]
```

Mvh icaaq

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

## #8 — NETwork, 2003-03-13T15:59Z

Nej, precis som icaaq visar här ovan så är det smidigast att du kan hämta dina variabler direkt i klassen, det är som sagt rejält onödigt att returnera ett helt dataset för två variabler!

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

## #9 — icaaq, 2003-03-13T16:01Z

weeee :)

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

## #10 — Web-Tor, 2003-03-14T12:29Z

Det är bra att ni är överens. :)
Jag får ta en titt på det här i helgen och hoppas att även jag fattar. :e

Grejen är ju att man använder det som man känner till. Av någon anledning så har jag snöat in på DataList:er och då blir det lätt så att man vill använda det till allt. Jag måste helt enkelt lära mig mer. :)

**Icaaq »**
1\. Måste jag inte någon stans i Content-classen ta emot en variabel som berättar vilken rad ur databasen det är som jag ska hämta?

2\. Var i din kod är det själva SQL-frågan ska in?

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

## #11 — Web-Tor, 2003-03-15T18:10Z

Nu har jag gjort så här:

**aspx-sidan »**

```
private void Page_Load(object sender, System.EventArgs e)
{
	int _node = Convert.ToInt16(Request.QueryString["node"]);

	string Cell1 = "";
	string Cell2 = "";

	Content page = new Content();
	OleDbDataReader myReader = page.Template1(_node);

	while(myReader.Read() == true)
	{
		Cell1 += myReader["colCell1"];
		Cell2 += myReader["colCell2"];
	}

	LabelCell1.Text = Cell1;
	LabelCell2.Text = Cell2;
}
```

**Content.cs »**

```
public class Content
{
	public OleDbDataReader Template1(int nodeID)
	{
		Database db = new Database();
		OleDbDataReader myReader = db.getReader("SELECT colCell1, colCell2 FROM tblContent WHERE colID=" + nodeID + "");
		return myReader;
	}
}
```

**Database.cs »**

```
public class Database
{
	OleDbConnection myConn;

	public Database() 
	{
		myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:/InetPub/wwwroot/Consolidate/bin/consolidate.mdb");
	}

	public OleDbDataReader getReader(String mySQL)
	{
		OleDbCommand myCmd = new OleDbCommand(mySQL, myConn);
		myConn.Open();
		OleDbDataReader myReader = myCmd.ExecuteReader(CommandBehavior.CloseConnection);
		return myReader;
	}
}
```

Det funkar men är det "rätt"?

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

## #12 — P, 2003-03-15T18:16Z

Beror väl på lite hur pass avancerad applikationen är. Orkar du läsa så kolla på <http://www.webforum.nu/showthread.php?s=&threadid=61076>

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

## #13 — Web-Tor, 2003-03-15T18:19Z

Sidan är inte så avancerad ([se den här tråden](http://www.webforum.nu/showthread.php?s=&threadid=69260)) men koden får gärna vara mer avancerad än vad som behövs. ;)

Jag har försökt att lösa det här på nåt annat sätt men jag lyckas inte:

```
	while(myReader.Read() == true)
	{
		Cell1 += myReader["colCell1"];
		Cell2 += myReader["colCell2"];
	}
```

Bara det här blir t.ex. fel:

```
Cell1 = myReader["colCell1"];
```

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/71005-hämta-data-via-klass
