Hallo zusammen,
baue gerade eine kleine Webanwendung und spiele mich mit Databinding. Die Daten bekomme ich aus einen Typisierten Dataset. Soweit sogut.
Das Dataset befülle ich einfach mit dem TableAdapter. Daten da, alles OK.
Nun hab ich eine Spalte die sich aus anderen Feldern berechnet. Hab die Klasse der DataRow um eine eigene Eigenschaft erweitert. Zugriff aus meiner Consolenanwendung geht, nur das Databing will unter ASP.NET nicht.
Er sagt mir immer (Excetption), das er die Spate nicht finden kann die ich erstell habe.
Wie bekomme ich die Spalte da rein, es dürfte eigentlich nicht das Problem sein, komme leider nur nicht drauf.
Vielen Dank im Voraus
Liebe Grüße aus dem sonnigen Österreich
LastGentleman
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
Datarow und spalte passt irgendwie nicht zusammen meinst du vielleicht datacolumn?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Eigendlich schon, hab ja im die Daten im "Row".
Oder Denke ich komplett falsch?
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
spalte = column
zeile = row
was willst du denn einfügen?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
in die Row einen neue Column, die nicht aus der Datenbank kommt sondern ich selber berechne.
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
wenn du eine weiter column einfügst machst du das für alle rows
da alle rows in einem table die gleichen columns haben.
wenn du einem table eine column hinzufügst z.b so
DataTable dt = new DataTable();
DataColumn dataColumn = new DataColumn();
dataColumn.DataType = System.Type.GetType("System.String");
dataColumn.ColumnName = "newColumn";
dataColumn.DefaultValue = "";
dt.Columns.Add(dataColumn);
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Danke.
Die Exception kommt nun nicht mehr, das Feld ist nun aber wie zu erwarten leer.
Ich glaub ich meine Funktion darauf zuweisen. Hab keine Ahnung wie ich das machen werden.
Vielleicht hat jemand einen Vorschlag oder ist meine Anforderung so aus der Luft gegriffen und ich denke falsch?
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
Hallo zusammen
@demondriver235
dataColumn.DataType = System.Type.GetType("System.String");
=>
dataColumn.DataType = typeof(string);
Zum anderen, schaut mal hier:
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
@ Peter Buchner: ..das geht natürlich auch.. 😉
@Lastgentleman.
Wenn du in einer Spalte in einer DataTable einen Berechneten Wert haben möchtes
würde ich erst einmal prüfen ob die die berechnung nicht schon in der abfrage tätigen kannst. z.B.
deine bisherige abfrage ist:
select spalte1, spalte2 from..
und deine Tabelle sieht dann so aus
spalte1 spalte2
1 2
4 5
und du möchstest nur eine dritte spalte haben in der die summe von spalte1 + spalte2
steht, kannst du ja einfach dein select ändern auf
select spalte1, spalte2, spalte1 + spalte2 as summe from ...
Das ist natürlich ein sehr sehr simples beispiel welches aber auch für komplexere
berechnungen funktioniert.
Für den fall das du die berechnung der zusätzlichen spalte nicht mit sql bewerkstelligen kannst ist es wahrscheinlich am einfachsten die zusätzliche spalte
mit sql im entsprechenden typ "leer" zu erstellen und dann per c# die berechnung
vornimmst und die werte einträgst, z.B so:
select spalte1, spalte2, 0 as ZusSpalte from....
und dann im resultierendem DataTable
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
row.BeginEdit();
row[2] = deineMethodeZumBerechnen();
row.EndEdit();
}
ps. das ist nur ein beispiel, foreach wäre in der praxis eher angebracht.....
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Hab's versucht nochmal hinzubekommen, leider geht's nicht. 😦
Mit meiner Variante hätte ich mehr spaß gehabt, weil es wirklich nur die Datensätze berechnet hätte, auf denen auch zugegriffen worden wäre, bessere Performance, dazu dann auch Starke Typisierung.
Kann man leider nix machen, danke für eurer Mühen. Muss mich halt aktuell mit demondriver235 drüber retten.
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein