2013-08-22 3 views
1

Возможно ли изменить значение столбца или значение ячейки на основе условия?
Как изменить значение столбца DataGridView на основе условия

Рассмотрим я имею 3 колонки в DataGridView (то есть), чтобы найти наибольшее из двух числа

Входной сигнал от DataGridView заводится с SQL Server.

Первый столбец Datagridview - A, а второй - B, а третий столбец - для определения того, является ли A больше B или нет. если условие удовлетворяет, оно должно отображать текст "TRUE" или еще "FALSE" в 3-м столбце.

ответ

0

метод использования Server Side изменить значение ячейки в соответствии с вашим состоянием:

<asp:TemplateField HeaderText="Application No"> 
<ItemTemplate> 
<asp:Label ID="lbl" Text='<%# chkValue(Eval("A"),Eval("B")) %>' runat="server" /> 
    </ItemTemplate> 
    </asp:TemplateField> 

функция chkValue будет принимать два аргумента и проверить, какое значение больше и возвращает истину/ложь соответственно.

+0

+1 за быстрый ответ каким-либо образом мне это нужно для Windows Forms. я могу использовать это для моей будущей цели. – coolprarun

0

Попробуйте

<asp:GridView runat="server" ID="gv"> 
     <Columns> 
      <asp:TemplateField HeaderText="a"> 
       <ItemTemplate> 
        <%# Eval("a") %> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="b"> 
       <ItemTemplate> 
        <%# Eval("b") %> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="display"> 
       <ItemTemplate> 
        <%# Convert.ToInt16(Eval("a"))>Convert.ToInt16(Eval("b"))?"True":"False" %> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
+0

+1 для быстрого ответа любым способом, который мне нужен для окон. я могу использовать это для моей будущей цели. – coolprarun

0
Protected Sub dgrd_WWWH_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles dgrd_WWWH.RowDataBound 
If e.Row.RowType And DataControlRowType.DataRow Then 
       Dim ColA As Label = CType(e.Row.FindControl("colA"), Label) 
Dim ColB As Label = CType(e.Row.FindControl("colB"), Label) 
If Val(ColA) > Val(ColB) then 
dgrd_WWWH.Rows(e.Row.RowIndex).Cells(2).Text = "True" 
Else 
dgrd_WWWH.Rows(e.Row.RowIndex).Cells(2).Text = "False" 
End If 
End If 
End Sub 
1

Я отвечал на подобный вопрос здесь Changing Cell Values of DataGridView

Вы можете использовать DataGridView.CellFormatting событие. В вашем случае вам необходимо получить для каждой строки значение других ячеек, когда необходимо отформатировать третью ячейку.

Код ниже пример предполагает:

  • значения int в DataGridView: вам нужно сделать соответствующее преобразование.
  • no Null, DbNull Значения: при необходимости необходимо проверить нулевые значения.

void dgv_CellFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e) 
{ 
    if (e.ColumnIndex == 2) { 
     if (Convert.ToInt32(this.dgv.Rows[e.RowIndex].Cells[0].Value) > Convert.ToInt32(this.dgv.Rows[e.RowIndex].Cells[1].Value)) { 
      e.Value = "TRUE"; 
     } else { 
      e.Value = "FALSE"; 
     } 
     e.FormattingApplied = true; 
    } 
}