2016-09-07 6 views
0

Ich versuche, Werte aus einem DataSet in C#/ASP.NET aus einer gespeicherten Prozedur zurückgegeben. Normalerweise wird die DefaultView von diesem DataSet in einer GridView in einer ASP.NET-Seite übergeben. In diesem Fall hat eine bestimmte Spalte, die mich interessiert, einen Wert. Wenn ich jedoch versuche, eine DataRow zu lesen und den Spaltenwert abzurufen, wird sie als leer angezeigt.DataRow-Spalte hat Wert beim Lesen, aber nicht beim Lesen

Zum Beispiel wird dieser Wert angezeigt werden:

DataSet ds = ////// 
DataView dv = ds.Tables[0].DefaultView; 
grdQuotes.DataSource = dv; 
grdQuotes.DataBind(); 

Das aber gibt mir keinen Wert:

DataSet ds = ////// 
foreach (DataRow row in ds.Tables[0].Rows) { 
    String value1 = (String)row["DOReviewDate"]; 
    String value2 = ((Object)row["DOReviewDate"]).ToString(); 
    String value3 = row.Field<String >("DOReviewDate"); 
} 

Alle drei Variablen leer enden.

Ich bin ziemlich verloren, wohin damit zu gehen, da es offensichtlich ist, dass ein Wert aus der SQL-Datenbank gezogen wird, sonst würde es nicht in der GridView-Tabelle auf der Seite angezeigt. Außerdem kann ich den Rest der Spaltenwerte in der Zeile ohne Problem erhalten. Interessanterweise gibt es eine andere Spalte, die das gleiche Verhalten zeigt.

- EDIT -

Versuch durch Zeilen und Spalten iterieren Daten zu erhalten:

StringBuilder sb = new StringBuilder(); 
foreach (DataRow row in ds.Tables[0].Rows) 
{ 
    StringBuilder r = new StringBuilder(); 
    foreach (DataColumn c in ds.Tables[0].Columns) 
    { 
     r.Append(String.Format("{0} | ", row[c])); 
    } 
    r.Append("END"); 
    sb.AppendLine(r.ToString()); 
} 
+0

Was ist der Datentyp der Spalte DOReviewDate? – Steve

+0

Zur Fehlerbehebung empfehle ich Ihnen, ein wenig Code zu schreiben, um alle 'Tables',' Zeilen' und Felder zu durchlaufen, damit Sie sehen können, was vor sich geht (oder Sie können einen Breakpoint setzen und über Watch inspizieren). Möglicherweise enthält die Tabelle [0] eine Nachricht von T-SQL (z. B. wenn Sie vergessen haben, "NOCOUNT ON ON" einzustellen) –

+0

Der Datentyp ist ** String **. Außerdem habe ich die vollständige Liste der Spalten durchlaufen, und wenn es Datenreferenzierung mit einer DataColumn anstelle stattdessen hervorbringt, ergibt nichts. Was die Rückgabe von der Datenbank angeht, habe ich keine wirkliche Kontrolle darüber, da ich sie nicht erstellt habe und auch nicht. Ich füge meinem Beitrag eine Bearbeitung hinzu, um zu zeigen, was ich versucht habe. –

Antwort

0

war ich endlich in der Lage, die gespeicherte Prozedur Stromversorgung diese Funktion zu finden. Es gibt leere Werte für die Spalten, die ich brauche. Es gibt nichts als eine leere Zeichenfolge, die angibt, was zurückgegeben werden soll. Obwohl ich die Funktionalität innerhalb der Seitenkonstruktion nicht finden kann, sieht es so aus, als ob es eine Art Join oder alternative Suche gibt, die die Daten zieht, und ich glaube, dass ich die Tabelle gefunden habe, von der ich ausging. Ich denke, ich muss nur diese ersten Daten an mich zurückgeben und sie vom anderen Tisch ziehen. Oder, denke ich, mache vielleicht meine eigene SQL-Suche mit einem Join. In beiden Fällen enthält die gespeicherte Prozedur selbst keinen Join zur Tabelle, die ich brauche. Dies ist, was in der gespeicherten Prozedur war:

'' as DOReviewDate