DataSet - Daten ändern

EnricoG

Grünschnabel
Hi,
ich hock zur Zeit in meinem Praktikum und soll ne Auswertung zu einer Umfrage in ASP.net machen.
Die Daten hocken schon in der Datenbank und ich muss sie nur noch abrufen.

Das ganze abrufen und in ein DataGrid stecken ist auch keni Problem, aber wie kann ich die Daten darin vorher manipulieren?
Da in der Umfrage einige Einträge in der Datenbank als "Bit" gespeichert wurden zeigt es mir im Grid nun als "True" und "False" an, wie kann ich daraus ein einfaches Ja/Nein machen?

Bin noch recht neu mit dem ganzen ASP.net Zeugs, von daher über jede Hilfe dankbar.

Grüße
Enrico
 

tamiro

Grünschnabel
Hallo Enrico,
lerne momentan auch asp.net jeweils aber vb, ich hoffe dass ich dir trotzdem helfen kann.
wenn du die antworten manipulieren willst, dann leg dich doch einfach an. z.b.

Dim Ja As String(oder anstatt String "Boolean")
Dim Nein As String(oder auch Boolean)
Ja=True
Nein=False

True und False nennt man auch "boolische Antworten". nun, so viel ich kann ich dir sagen. darauf werden auch noch ein paar antworten. viel glück
 

EnricoG

Grünschnabel
Hi,

danke erstmal für die Antwort, meinte aber was anderes. (Oder ich hab dich dich nicht verstanden :) )
Am besten poste ich mal meinen bisherigen Code:

Code:
string strSQL = "SELECT txt_company as Firma, rb_14yes as 'Kostenloser Support', rb_15yes as 'Kostenpflichtiger Support', rb_16yes as FAQ FROM Data ORDER BY ID"; 
try {  				
SqlConnection fsConnection = new SqlConnection(ConfigurationSettings.Appsettings["ConnectionString"]);
SqlDataAdapter fsAdapter = new SqlDataAdapter(strSQL, fsConnection);  
DataSet fsDataSet = new DataSet(); 
fsAdapter.Fill(fsDataSet, "Data");
return fsDataSet;
}

Gebindet wird natürlich auch noch:

Code:
DataGrid1.DataSource = GetAll();	//GetAll ist die Prozedur oben
DataGrid1.DataBind();

Das klappt soweit auch wunderbar, das DataGrid wird ausgegeben und angezeigt.
Aber im DataGrid steht in den einzelnen Zellen dann "True" oder "False" und diese möchte ich auslesen und durch ein "Ja" oder "Nein" ersetzen.
Ich kriege es einfach nicht hin auf die einzelnen Zellen zuzugreifen, ansonsten hab ich mir gedacht lass ich eine Schleife durch alle Reihen durchlaufen und überprüf dann jedesmal einzeln.
Aber wie kann ich darauf zugreifen? Oder hat jemand eine Idee wie ich einfach sagen kann "Mach aus "Bit" immer Ja/Nein" :)

Bin weiterhin über jede Hilfe dankbar ;)
 

EnricoG

Grünschnabel
Ok ich bin nun soweit das ich in jeder Reihe den gewünschten Wert auslesen kann und "theorethisch auch ändern kann.
Siehe Code:

Code:
foreach (DataRow ro in fsDataSet.Tables["data"].Rows)
				{
					if (ro["FAQ"].ToString() == "True") 
					{						
						ro["FAQ"] = "Yes";
					}									
				}

Jetzt eigentlich schon das logische Problem das die Column "FAQ" gefüllt ist mit Boolean Werten, gibt es eine Möglichkeit die umzuwandeln ohne das in der Datenbank tun zu müssen? Also nur in dem DataSet ohne es auf die DB zu speichern?
So kracht mir natürlich alles um die Ohren :/

Bin wieder mal dankbar für jeden Tip ;)
 
Zuletzt bearbeitet:

EnricoG

Grünschnabel
Ok ich hätte schon ne Lösung gefunden, es ist einfach möglich die Felder bereits im Query per "cast" in varchars zu casten und damit hätte sich das gelöst.
Jetzt muss ich aber immer noch die gesamte Tabelle durchlaufen und aus 1/0 ein Ja/Nein machen, also wenn jemand noch nen performanteren Weg weiss kann ers gerne posten ;)
 

Norbert Eder

Erfahrenes Mitglied
In den Eigenschaften zu deiner DataTable hast du ja das Mapping der einzelnen DB-Columns auf die Tabellen-Columns. Da kannst unter anderem auch ein Format angeben. Eigentlich sollte das Problem darüber zu lösen sein.
 

d-snake

Grünschnabel
Warum änderst du nicht einfach deine Datenansicht(also DataGrid). Da du beim DataSet / DataReader noch den Datentyp ändern müsstest.
Das ganze würde wie folgt aussehen:
Code:
 Private Sub DGrid_ItemDataBound(ByVal sender As System.Object, ByVal e As C1.Web.C1WebGrid.C1ItemEventArgs) Handles DGrid.ItemDataBound
       For i = 0 To DGrid.Items.Count - 1
            If DGrid.Items(i).Cells(3).Text = "True" Then
                DGrid.Items(i).Cells(3).Text = "Ja"
            Else
                DGrid.Items(i).Cells(3).Text = "Nein"
            End If
        Next
  End Sub
 

EnricoG

Grünschnabel
d-snake hat gesagt.:
Warum änderst du nicht einfach deine Datenansicht(also DataGrid). Da du beim DataSet / DataReader noch den Datentyp ändern müsstest.
Das ganze würde wie folgt aussehen:
Code:
 Private Sub DGrid_ItemDataBound(ByVal sender As System.Object, ByVal e As C1.Web.C1WebGrid.C1ItemEventArgs) Handles DGrid.ItemDataBound
       For i = 0 To DGrid.Items.Count - 1
            If DGrid.Items(i).Cells(3).Text = "True" Then
                DGrid.Items(i).Cells(3).Text = "Ja"
            Else
                DGrid.Items(i).Cells(3).Text = "Nein"
            End If
        Next
  End Sub

Hi,
das wär natürlich auch noch eine Idee :)
Aber bin im Grunde nun schon fertig damit, aber fürs nächste mal die wahrscheinilch schnellere Lösung.
Danke.