Foros del Web » Programando para Internet » ASPX (.net) »

[c#] Datagrid y checkbox

Estas en el tema de [c#] Datagrid y checkbox en el foro de ASPX (.net) en Foros del Web. Estimados, tengo que validar unos datos que selecciono en un datagrid por medio de un checkbox. La validación es tan solo que no se repite ...
  #1 (permalink)  
Antiguo 05/02/2009, 08:28
 
Fecha de Ingreso: mayo-2008
Ubicación: Chile
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
[c#] Datagrid y checkbox

Estimados,
tengo que validar unos datos que selecciono en un datagrid por medio de un checkbox. La validación es tan solo que no se repite un id (que es una columna de la grilla)...
Lo que tengo por el momento es recorrer la grilla y contar las veces repetidas que esta el id, pero el problema es, como tengo 2 ciclos los valores los va sumando.
(ojala se entienda el problema)


Cita:
static bool BuscaDatosRepetidos( DataGrid dgProductos)
{
string chkrut_b;
CheckBox chk;
int contador = 0;

foreach (DataGridItem dgItem in dgProductos.Items)
{
chk = (CheckBox)dgItem.Cells[13].Controls[1];

if (chk.Checked == true)
{
chkrut_b = (string)dgItem.Cells[3].Text;
foreach (DataGridItem dgItem_b in dgProductos.Items )
{
if ((string)dgItem.Cells[3].Text == chkrut_b) contador++;
}
if (contador != 0) contador = contador - 1;
}
}
if (contador >= 1) return true;
else return false;
De antemano gracias
  #2 (permalink)  
Antiguo 05/02/2009, 09:39
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: [c#] Datagrid y checkbox

Si lo que queres es saber si tenes repetidas y no te interesa saber cuantas declara una variable boolena y en lugar de aumentar el contador le asignas en true y haces un exit for desde ahi y retornas esa varialbe.

La variable la declaras y le asignas false de un comienzo ok.

foreach (DataGridItem dgItem in dgProductos.Items)
{
chk = (CheckBox)dgItem.Cells[13].Controls[1];

if (chk.Checked == true)
{
chkrut_b = (string)dgItem.Cells[3].Text;

foreach (DataGridItem dgItem_b in dgProductos.Items )
{
if ((string)dgItem.Cells[3].Text == chkrut_b) {
TuVariableBool=True;
//aca pones tu exit for (no recuerdo si es asi en c# ok)
}
f (TuVariableBool==True) //otro exit for;
}
return TuVariableBool;
}
  #3 (permalink)  
Antiguo 05/02/2009, 11:50
 
Fecha de Ingreso: mayo-2008
Ubicación: Chile
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Respuesta: [c#] Datagrid y checkbox

Gracias @Mdavila,
había pensado una solución parecida, pero el problema que tenía con ella es que ya encontraba 1 por defecto (la seleccionada), lo que hice fue simplemente llamar a una función que hiciera lo casi lo mismo (por eso no pude utilizarla de forma recursiva)
Dejo acá la solución por si a alguien mas le sirve,

Código:
    static bool BuscaDatosRepetidos( DataGrid dgProductos)
    {
        CheckBox chk;
        bool sw=false;
        foreach (DataGridItem dgItem in dgProductos.Items)
        {
            chk = (CheckBox)dgItem.Cells[13].Controls[1];
            if (chk.Checked == true)
            {
                sw = BuscaRepetidos(dgProductos, (string)dgItem.Cells[14].Text);
                if (sw == true) break;
            }            
        }
        return sw;
    }
Código:
    static bool BuscaRepetidos(DataGrid dgrid, string id)
    {
        CheckBox chk;
        int contador=0;
        foreach (DataGridItem dgitem in dgrid.Items)
        {
            chk = (CheckBox)dgitem.Cells[13].Controls[1];
            if ((chk.Checked == true) & ((string)dgitem.Cells[14].Text == id)) contador++;
        }
        if (contador != 0) contador--;
        if (contador == 0) return false ; //VALOR NO REPETIDO
        else return true ;              //VALOR REPETIDO
    }
Bue' si alguien tiene algo un poco mas optimo, no estaría demás que me lo propusiera
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.