2016-05-06 10 views
0

Ich habe eine gridview, in der es mehrere columns und rows sind.Datatable zuweisen falsche Werte zu string beim Aufruf

während des Debuggen erzeugt sie datatable wie unten

Datatable

während Werte für die erste und zweite Reihe in HTML-Tabelle zuweisen Ich nenne es wie unten

StrPriBody = StrPriBody + "<table style='width: 100%; height: 53px' border='1'><tr> " + 
      "<td style='width: 100px; height: 14px;background-color:" + strcolordet + " ;white-space:nowrap'><strong>Job Security </strong></td> " + 
      "<td style='width: 100px; height: 14px;background-color:" + strcolordet + "'>" + strgrid1 + "</td><br /> " + 
     "<td style='width: 100px; height: 14px;background-color:" + strcolordet + " ;white-space:nowrap'><strong>Opportunity for Promotion </strong></td> " + 
      "<td style='width: 100px; height: 14px;background-color:" + strcolordet + "'>" + strgrid1 + "</td></tr></table> "; 

vom datatable Code

foreach (DataRow row in dttable2.Rows) 
    { 
     /** Job security **/ 
     if (row["Rating1"].ToString() == "Y") 
     { 
      strgrid1 = "Poor"; 
     } 
     if (row["Rating2"].ToString() == "Y") 
     { 
      strgrid1 = "Satisfactory"; 
     } 
     if (row["Rating3"].ToString() == "Y") 
     { 
      strgrid1 = "Good"; 
     } 
     if (row["Rating4"].ToString() == "Y") 
     { 
      strgrid1 = "Excellent"; 
     } 
    } 

aber wenn ich den Wert für sehe, kommt es immer als Excellent. WARUM ??

Es werden falsche Werte zugewiesen. Der Screenshot von gridview ist unten. Ich möchte die richtigen Werte für diejenigen sehen, die überprüft werden.

GRID

Bitte legen nahe, warum es falsche Werte unter

UPDATE:

Datentabelle Code: -

DataTable dttable2 = new DataTable(); 
    dttable2 = CF.ExecuteDT("select cr.Mkey, cr.Rating1,cr.Rating2,cr.Rating3,cr.Rating4 from p_emp_Company_Rating cr " + 
          "join p_emp_Exit_Interview ei on ei.Mkey=cr.Mkey where ei.mkey='" + HidMKey.Value + "'"); 
+0

Sind Sie strgrid1 separat für jede Zeile oder ist, dass der einzige Ort, den Sie strgrid1 gesetzt zuweisen? Wenn es Letzteres ist, wird strgrid1 immer das Ergebnis für die letzte Zeile in dttable2 sein. – pll33

+0

Sie müssen mehr "Datatable" Code zeigen, es ist noch nicht klar, wo das Problem liegt. – user3185569

+0

@ pll33: Nein, ich weise es nicht separat zu. Was soll man dafür machen? – BNN

Antwort

1

Sie verwenden eine Variable strgrid1 Ihre zu bauen ganze Tabelle, die nur einen Wert hat, wenn du das tust, das las t Wert.

Sie benötigen Reihen innerhalb der Schleife zu bauen:

StrPriBody = StrPriBody + "<table style='width: 100%; height: 53px' border='1'><tr> "; 

List<string> titles = new List<string>() 
{ 
    "Job Security", "Opportunity for Promotion" // etc.. 
}; 
Queue<string> titlesQueue = new Queue<string>(titles); 

foreach (DataRow row in dttable2.Rows) 
{ 
    string rowTitle = ""; // GET THE TITLE FROM SOME ARRAY OR LIST 
    /** Job security **/ 
    if (row["Rating4"].ToString() == "Y") 
    { 
     strgrid1 = "Excellent"; 
    } 
    else if (row["Rating3"].ToString() == "Y") 
    { 
     strgrid1 = "Good"; 
    } 
    else if (row["Rating2"].ToString() == "Y") 
    { 
     strgrid1 = "Satisfactory"; 
    } 

    else if (row["Rating1"].ToString() == "Y") 
    { 
     strgrid1 = "Poor"; 
    }  

    StrPriBody = StrPriBody + 
     "<td style='width: 100px; height: 14px;background-color:" + strcolordet + " ;white-space:nowrap'><strong>" + titlesQueue.Dequeue() + "</strong></td> " + 
     "<td style='width: 100px; height: 14px;background-color:" + strcolordet + "'>" + strgrid1 + "</td><br /> "; 
} 

StrPriBody += "<table/>"; 
+0

danke für die Antwort, aber wie bekomme ich den 'rowtitle' hier, wie auch immer es wird nur hart Code .. wenn Sie wissen, wie man in Array bekommen lassen Sie es mich wissen. danke – BNN

+0

und woher wissen Sie, dass diese Zeile in der DataTable, wenn für diesen bestimmten Titel? Sind die Werte für Titel in der Datentabelle immer in derselben Reihenfolge? – user3185569

+0

ja sie sind in der gleichen Reihenfolge in der Datentabelle auch. – BNN