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
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).
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
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...
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!
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?
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;
}
}