ASP.NET - propiedades del DataGrid

 
Vista:
Imágen de perfil de diana

propiedades del DataGrid

Publicado por diana (44 intervenciones) el 10/06/2003 18:56:06
hola, estoy utilizando el datagrid en un aspx, para mostrar el resultado de una consulta, y quiero modificar las propiedades de cada celda del grid en base a los resultados que arroje la consulta, pero no encuentro como hacer esto, es posible? que propiedades son las que puedo cambiar?
De antemano gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:propiedades del DataGrid

Publicado por Sergio Florez (22 intervenciones) el 10/06/2003 22:29:30
Me imagino que lo que quieres es que dependiendo del valor del campo hacer que la celda tenga el texto en determinado color o que sea de determinado tamaño. Mi respuesta parte de este supuesto.

Para modificar cada celda de acuerdo a los datos del campo en la base de datos debes utilizar el evento ItemDataBound. Para esto debes utilizar la propiedad OnItemDataBound del datagrid, y asignarle en nombre del metodo que va a controlar este evento.

ej: <asp:datagrid ... OnItemDataBound=ModificarCeldas>

Luego tu metodo (c#):
public void ModificarCeldas(object sender, DataGridItemEventArgs e)
{
....
}

Dentro de este metodo haras todas tus operaciones. Y recuerda que para acceder a las celdas utilizas e.Item.Cells[0] para la primera, e.Item.Cells[1] para la segunda... asi que si haces
e.Item.Cells[0].BackColor = Color.Blue;
estas haciendo que tu primera celda tenga el fondo azul.

Otro aspecto a tener en cuenta es que dentro del metodo la forma de acceder a los campos traidos de la base de datos es esta:
DataBinder.Eval(e.Item.DataItem, "ElCampo")

Por último, debes tener en cuenta que no todos los items de un datagrid tienen datos, tambien estan los items de encabezado, paginacion y pie, entonces se debe controlar esto preguntando por si e.Item.ItemType == ListItemType.Item o e.Item.ItemType == ListItemType.AlternatingItem

Espero que esto te sirva. Estuve tratando de ponerte ejemplos con codigo exacto pero el foro no me deja.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:propiedades del DataGrid

Publicado por Sergio Florez (22 intervenciones) el 10/06/2003 22:30:59
Este seria el ejemplo funcional. Me imagino que antes no dejaba porque me pasaba del limite de caracteres.

public void ModificarCeldas(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (Convert.ToDouble(DataBinder.Eval(e.Item.DataItem, "Precio") > 100)
{
e.Item.Cells[0].BackColor = Color.Blue;
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de diana

Gracias!!

Publicado por diana (44 intervenciones) el 11/06/2003 00:13:20
hola, muchas gracias funciono perfecto. te debo una!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:propiedades del DataGrid

Publicado por Luis Alberto Rodriguez Angeles (1 intervención) el 11/02/2008 16:03:26
Hola Diana, respecto a tu pregunta si si se puede hacer, lo primero que necesitas es crear tu proveedor de datos con SQLdataprovider tienes que hacer una seleccion de los campos que quieras pero lo importante es que siempre debes seleccionar el ID (necesariamente) el punto es que tambien debes de especificar tu query para actualizar y borrar.

Ahora con el gridview creado le das click derecho y seleccionas mostrar etiqueta inteligente, en editar columnas seleccionas la casilla de autogenerar columnas,
le as aceptar y nos vamos al codigo de la pagina
ahora lo importante
1.- DataKeyNames="Id" es el campo con el cual te permitira modificar o eliminar el registro
2.- AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" te genera los botones de elminar y modificar los campos directamente desde el gridview
3.- DataSourceID="SqlDataSource1" el origen de datos de nuestro gridview
3.1.- SelectCommand="SELECT Id, Nombre, Geografía FROM Person"
UpdateCommand="UPDATE Person SET Nombre =@Nombre, Geografía

///este es nuestro origen de datos
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:mexicoConnectionString %>"
ProviderName="<%$ ConnectionStrings:mexicoConnectionString.ProviderName %>"
SelectCommand="SELECT Id, Nombre, Geografía FROM Person"
UpdateCommand="UPDATE Person SET Nombre =@Nombre, Geografía =@Geografia WHERE Id=@Id">
</asp:SqlDataSource>
/// este es nuestro gridview
<asp:GridView ID="GridView1" runat="server" DataKeyNames="Id" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4" GridLines="Horizontal" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False">
<FooterStyle BackColor="White" ForeColor="#333333" />
<RowStyle BackColor="White" ForeColor="#333333" />
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="Nombre" HeaderText="Nombre" SortExpression="Nombre" />
<asp:BoundField DataField="Geografía" HeaderText="Geografía" SortExpression="Geografía" />
<asp:TemplateField>
<ItemTemplate>
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


espero haya sido de ayuda, cualcuier cosa contactame por correo bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar