Laden...

Gridview mit eigener Spalte [mit Notlösung]

Erstellt von LastGentleman vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.187 Views
LastGentleman Themenstarter:in
1.274 Beiträge seit 2005
vor 15 Jahren
Gridview mit eigener Spalte [mit Notlösung]

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

D
496 Beiträge seit 2005
vor 15 Jahren

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."

LastGentleman Themenstarter:in
1.274 Beiträge seit 2005
vor 15 Jahren

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

D
496 Beiträge seit 2005
vor 15 Jahren

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."

LastGentleman Themenstarter:in
1.274 Beiträge seit 2005
vor 15 Jahren

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

D
496 Beiträge seit 2005
vor 15 Jahren

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."

LastGentleman Themenstarter:in
1.274 Beiträge seit 2005
vor 15 Jahren

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

5.941 Beiträge seit 2005
vor 15 Jahren

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

D
496 Beiträge seit 2005
vor 15 Jahren

@ 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."

LastGentleman Themenstarter:in
1.274 Beiträge seit 2005
vor 15 Jahren

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