ASP.NET - CheckBox En gridView

 
Vista:

CheckBox En gridView

Publicado por Arcenett (45 intervenciones) el 08/04/2008 15:05:58
hola a todos , tengo el siguiente problema.

estoy llenando un gridview y en este hay una columna con un itemtemplate el cual contiene un checkbox (el gridview esta paginado), la idea es que todos los datos del grid queden con un checkbox en la columna cero (esto funciona ok) , el problema es ke por ejemplo marco un checkbox de la primera pagina y luego voy a la segunda pagina de la grilla y marco otro checkbox luego cuando vuelvo a la primera pagina el checkbox que habia seleccionado ya no esta seleccionado. como puedo hacer esto...si alguien tiene algun codigo para analiozar seria de gran ayuda. a todo esto la pagina esta en C#.
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:CheckBox En gridView

Publicado por Pablo Iñareta (131 intervenciones) el 08/04/2008 15:32:28
puedes añadir una columna a tu origen de datos y meter un booleano con el valor del check, y luego tienes dos opciones, o los lees al cambiar de pagina o en el mismo momento en q lo rellenas o lo vacias.
no se si me explico
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:CheckBox En gridView

Publicado por arcenett (45 intervenciones) el 08/04/2008 15:38:33
en realidad no te entiendo muy bien.....mmmmm pero a origen de datos te refieres a la base de datos ?..... si me puedes dar un ejemplo con peras y manzanas ...jeje seria de muy bueno por ke ya toy que reviento
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:CheckBox En gridView

Publicado por Pablo Iñareta (131 intervenciones) el 08/04/2008 15:43:32
supongo q tu origen de datos es un dataset, antes de bincularlo al grid y una vez lleno de datos añadele una columna para almacenar los valores de los checks, inicialmente, supongo q todos vacios, todos false.
cuando hagas check en alguno de ellos, cambias el valor en el dataset, o bien, cuando cambies de pagina.
siento no poder explicarme mas y mejor
estoy en el curro y me llaman
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:CheckBox En gridView

Publicado por arcenett (45 intervenciones) el 08/04/2008 15:56:03
mmmm......mira aca muestro el codigo del gridview que esta en el aspx, gracias por tu ayuda Pablo , yo tb estoy en el trabajo...jejeej es ke esto nunca lo habia tenido que hacer y ay estpy hecho un lio :


<asp:GridView ID="gwDocumentos" runat="server" AutoGenerateColumns="False" BorderStyle="Solid"
Width="100%" OnRowCommand="gwDocumentos_RowCommand" AllowPaging="True" OnPageIndexChanging="gwDocumentos_PageIndexChanging" PageSize="50">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSeleccion" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="idDocumento" HeaderText="Facturas" >
<ItemStyle Width="50px" />
</asp:BoundField>
<asp:BoundField DataField="Cliente" HeaderText="Cliente" />
<asp:BoundField DataField="saldo" HeaderText="Monto" HtmlEncode="False" DataFormatString="{0:c}    " >
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:TemplateField HeaderText = "Tipo de Documento">
<ItemTemplate>
<asp:DropDownList ID="ddlTipoDocumentos" runat="server" DataTextField="Nombre" DataValueField="id" DataSource="<%# CargarTipoDocumentos() %>">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tipo de Cobranza">
<ItemTemplate>
<asp:DropDownList ID="ddlTipoCobranzas" runat="server" DataTextField="Nombre" DataValueField="id" DataSource="<%# CargarTipoCobranzas() %>" OnSelectedIndexChanged="ddlTipoCobranzas_SelectedIndexChanged">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Factoring">
<ItemTemplate>
<asp:DropDownList ID="ddlFactoring" runat="server" DataTextField="Nombre" DataValueField="idFactoring" DataSource="<%# CargarFactoring() %>">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=" Opciones">
<ItemTemplate>
<div style="text-align:center"><asp:ImageButton CommandArgument='<%# i%>' ID="btnGuardar" runat="server" AlternateText="Guardar Cambios" CommandName="guardar"
ImageUrl="~/App_Themes/Default/Images/save.gif" /></div>
</ItemTemplate>
<ItemStyle Width="50px" />
</asp:TemplateField>
</Columns>
<RowStyle CssClass="x-grid3-row" />
<HeaderStyle CssClass="x-grid3-header x-form-item" Height="20px" />
<PagerSettings FirstPageImageUrl="~/App_Themes/Default/Images/default/grid/page-first.gif"
FirstPageText="Primera Página" LastPageImageUrl="~/App_Themes/Default/Images/default/grid/page-last.gif"
LastPageText="Ultima Página" Mode="NextPreviousFirstLast" NextPageImageUrl="~/App_Themes/Default/Images/default/grid/page-next.gif"
NextPageText="Adelante" Position="TopAndBottom" PreviousPageImageUrl="~/App_Themes/Default/Images/default/grid/page-prev.gif"
PreviousPageText="Atras" />
<PagerStyle Height="30px" HorizontalAlign="Center" />
</asp:GridView>
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:CheckBox En gridView

Publicado por Pablo Iñareta (131 intervenciones) el 09/04/2008 10:25:37
ese codigo me dice muy poco.
1.- insisto es lo q te comente, cuando llenes tu dataset con el q alimentas el grid, en donde estan los campos idDocumento, clientes, saldo, ..., cuando lo tengas lleno de datos, añade una columna a la tabla, la del dataset, para guardar los valores del check, q inicialmente sarán false.
2.-y ya esta, ahora programa el evento onchange del check, para que se actualice la fila en cuestion del dataset, y haces una nueva carga del grid con el dataset actualizado, no acudas de nuevo a la base de datos, ya que perderias la columna con los nuevos datos.
3.- tampoco acudas a la base de datos cuando tengas q cambiar de pagina, utiliza siempre el dataset cargado la primera vez, si no tb perderás los datos.
sencillo, ¿hay algo q no sepamos hacer?
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:CheckBox En gridView

Publicado por arcenett (45 intervenciones) el 09/04/2008 18:41:18
gracias por todo....ya logre hacerlo....jejeje aca dejo el codigo por si a alguien le pasa lo mismo que a mi :

protected void gwDocumentos_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
RecuperaChequeados();
gwDocumentos.PageIndex = e.NewPageIndex;
CargarDocumentosSAP();
ReMarcaValues();
}

private void RecuperaChequeados()
{
ArrayList categoryIDList = new ArrayList();

foreach (GridViewRow Row in gwDocumentos.Rows)
{
int index1 = Convert.ToInt32(Row.RowIndex);
string index = gwDocumentos.Rows[index1].Cells[1].Text + index1.ToString();

bool result = ((CheckBox)Row.FindControl("chkSeleccion")).Checked;

// Check in the Session
if (Session[CHECKED_ITEMS] != null)
categoryIDList = (ArrayList)Session[CHECKED_ITEMS];
if (result)
{
if (!categoryIDList.Contains(index))
categoryIDList.Add(index);
}
else
{
categoryIDList.Remove(index);
}
if (categoryIDList != null && categoryIDList.Count > 0)
Session[CHECKED_ITEMS] = categoryIDList;
}
}

private void ReMarcaValues()
{
ArrayList categoryIDList = (ArrayList)Session[CHECKED_ITEMS];
if (categoryIDList != null && categoryIDList.Count > 0)
{
foreach (GridViewRow row in gwDocumentos.Rows)
{
int index1 = Convert.ToInt32(row.RowIndex);
string index = gwDocumentos.Rows[index1].Cells[1].Text + index1.ToString();
if (categoryIDList.Contains(index))
{
CheckBox myCheckBox = (CheckBox)row.FindControl("chkSeleccion");
myCheckBox.Checked = true;
}
}
}
}
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:CheckBox En gridView

Publicado por pecas (1 intervención) el 23/07/2008 22:37:54
Muchas gracias, me sirvio bastante, justo lo q necesitaba
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