2016-05-06 3 views
0

У меня есть gridview, в котором есть несколько columns и rows.Datatable присвоение неправильных значений строке при вызове

При отладке он генерирует datatable, как показано ниже

Datatable

При назначении значения для первого и второго ряда в HTML-таблицы Я называю это, как показано ниже

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

из datatable кода

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"; 
     } 
    } 

, но когда я вижу значение для strgrid1, оно всегда приходит как Excellent. ЗАЧЕМ ??

Он присваивает неправильные значения. Снимок экрана gridview приведен ниже. Я хочу видеть правильные значения для тех, которые являются проверенными.

GRID

Просьба предложить, почему он принимает неправильные значения

UPDATE:

Datatable код: -

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

Вы назначая strgrid1 отдельно для каждой строки или в том, что единственное место, где вы установили strgrid1? Если это последний, то strgrid1 всегда будет результатом последней строки в dttable2. – pll33

+0

Вам нужно показать больше кода «datatable», пока неясно, где проблема. – user3185569

+0

@ pll33: Нет, я не назначаю его отдельно. что делать тогда? – BNN

ответ

1

Вы используете одну переменную strgrid1, чтобы построить свой целая таблица, которая имеет только одно значение, когда вы это делаете, las t.

Вы должны строить свои строки внутри цикла:

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

спасибо за ответ, но как получить 'rowtitle' здесь, так как в любом случае это будет только жесткий код. Если вы знаете, как попасть в массив, дайте мне знать. спасибо – BNN

+0

и откуда вы знаете, что эта строка в dataTable, если для этого конкретного заголовка? Являются ли значения для заголовков всегда в том же порядке в datatable? – user3185569

+0

Да, они находятся в том же порядке и в datatable. – BNN

Смежные вопросы