2012-03-12 17 views
6

Tengo un valor de bit (Negro) Quiero mostrar su estatus en gridview como si es verdad, la fila de representación "Sí", de lo contrario la fila de representación "No" , este es mi código, pero el resultado no está bien, mi primo visualización del código de todas las filas "Sí" si un valor es verdadero, quiero mostrar el estado de cada filasalida condicional en la celda en base a datos de fila en caso RowDataBound de Gridview

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataTable dt = GetData(); 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       Boolean bitBlack = Convert.ToBoolean(dt.Rows[i]["Black"]); 
       if (bitBlack) 
       { 
        e.Row.Cells[7].Text = ("Yes"); 
       } 
       else 
       { 
        e.Row.Cells[7].Text = ("No"); 
       } 
      } 
     } 
    } 
+0

¿cuál es el método GetData() que regresa? – Seany84

Respuesta

9

Siempre se puede utilizar las filas DataItem para obtener el subyacente DataSource:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     bool isBlack = row.Field<bool>("Black"); 
     e.Row.Cells[7].Text = isBlack ? "Yes" : "No"; 
    } 
} 
+1

solución exacta, está funcionando gracias a Tim – Shehab

+0

Obras para mí, pero en un contexto – wubblyjuggly

2

¿es necesario recorrer un DataTable dt en cada RowDatabound?

Si usted no necesita esto podría intentar:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 

       Boolean bitBlack = Convert.ToBoolean(e.Row.Cells[7].Text); 
       if (bitBlack) 
       { 
        e.Row.Cells[7].Text = "Yes"; 
       } 
       else 
       { 
        e.Row.Cells[7].Text = "No"; 
       } 

     } 
    } 
+0

Gracias Seany, pero he intentado su solución y tengo el error "No se puede convertir objeto de tipo 'System.Web.UI.WebControls.DataControlFieldCell' al tipo 'System.IConvertible'" – Shehab

+0

olvidó añadir la propiedad .Texto, consulte la versión revisada de mi código con la propiedad .Text agregada. – Seany84

2

No sé su fuente de datos, pero si puede evaluarlo, haga algo como esto:

<asp:TemplateField HeaderText="Status"> 
      <ItemStyle CssClass="list" /> 
      <ItemTemplate> 
        <%# GetBit(Eval("BlackBit"))%> 
      </ItemTemplate> 
</asp:TemplateField> 

An d código subyacente:

private string GetBit(object objBit) 
{ 
    if (Convert.ToInt32(objBit) == 1) 
    { 
     return "Yes"; 
    } 
    return "No"; 
} 
+0

La respuesta de Tim levemente diferente es perfecto estado de funcionamiento, Gracias a todos por ayudarnos – Shehab

Cuestiones relacionadas