elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  problema al eliminar y agregar registros d radGridView
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema al eliminar y agregar registros d radGridView  (Leído 4,586 veces)
SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
problema al eliminar y agregar registros d radGridView
« en: 5 Mayo 2015, 01:03 am »

slds gente dl foro.....verán en el sig código tengo q hcer una modificación en una base d datos...primero hgo la consulta del nro de orden y m trae los datos d esa orden al radGridView....el problema es que no puedo eliminar algún renglón d ese radGrid y tampoco añadirles....m salta un error q es d solo lectura (y ya cambie la propiedad ReadOnly) y para agregar filas RadListSource necesito un constructor sin parámetros para System.Data.DataRowView....debo hcr algo en la datatable? muchas grax d antemano
Código
  1. [/using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Data.SqlClient;
  10. using Telerik.WinControls;
  11. using Telerik.WinControls.UI;
  12.  
  13. namespace RegistrarOCspp2
  14. {
  15.    public partial class ModificarOCspp2 : Form
  16.    {
  17.        public ModificarOCspp2()
  18.        {
  19.            InitializeComponent();
  20.        }
  21.        private SqlConnection conexion;
  22.        private SqlDataAdapter adaptador;
  23.  
  24.        private void ModificarOCspp2_Load(object sender, EventArgs e)
  25.        {
  26.            // TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet5.medicamentos1' Puede moverla o quitarla según sea necesario.
  27.            this.medicamentos1TableAdapter1.Fill(this.proyectoSaludDataSet5.medicamentos1);
  28.            // TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet4.medicamentos1' Puede moverla o quitarla según sea necesario.
  29.            this.medicamentos1TableAdapter.Fill(this.proyectoSaludDataSet4.medicamentos1);
  30.            conexion = new SqlConnection("Data Source=GONZALOCABRERA\\SQLEXPRESS;Initial Catalog=ProyectoSalud;Integrated Security=True");
  31.            adaptador = new SqlDataAdapter();
  32.        }
  33.  
  34.        private void radButton1_Click(object sender, EventArgs e)
  35.        {
  36.            conexion = new SqlConnection("Data Source=GONZALOCABRERA\\SQLEXPRESS;Initial Catalog=ProyectoSalud;Integrated Security=True");
  37.            if (txtNro.Text == "")
  38.            {
  39.                RadMessageBox.SetThemeName("ATENCION");
  40.                DialogResult ds = RadMessageBox.Show(this, "DEBE INGRESAR UN NRO DE ORDEN", "ATENCION", MessageBoxButtons.OK, RadMessageIcon.Exclamation);
  41.                this.Text = ds.ToString();
  42.            }
  43.            else
  44.                if (txtNro.Text != "")
  45.                {
  46.                    conexion.Open();
  47.                    SqlCommand consulta = new SqlCommand("select Convert(varchar(10),fecIni,103) as fecIni ,Convert(Varchar(10),fecFin,103) as fecFin from ordenes where nro_orden=@nro", conexion);
  48.                    consulta.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNro.Text));
  49.                    SqlDataReader registro = consulta.ExecuteReader();
  50.  
  51.                    if (registro.Read())
  52.  
  53.                    {
  54.                        rdt1.Enabled = true;
  55.                        rdt2.Enabled = true;
  56.                        txtCant.Enabled = true;
  57.                        txtPrecio.Enabled = true;
  58.                        txtProg.Enabled = true;
  59.                        comboMed.Enabled = true;
  60.                        radButton3.Enabled = true;
  61.                        rdt1.Text = Convert.ToString(registro["fecIni"]);
  62.                        rdt2.Text = Convert.ToString(registro["fecFin"]);
  63.                        radButton5.Enabled = true;
  64.  
  65.                    }
  66.                    else
  67.                    {
  68.                        RadMessageBox.SetThemeName("ATENCION");
  69.                        DialogResult ds = RadMessageBox.Show(this, "LA ORDEN INGRESADA NO SE ENCUENTRA REGISTRADA", "ATENCION", MessageBoxButtons.OK, RadMessageIcon.Exclamation);
  70.                        this.Text = ds.ToString();
  71.  
  72.                    }
  73.  
  74.            conexion.Close();
  75.  
  76.            conexion.Open();
  77.            SqlCommand consulta2 = new SqlCommand("SELECT dbo.DetalleOrden.medicamento, dbo.DetalleOrden.cantidad, dbo.DetalleOrden.programa, dbo.DetalleOrden.precioUnit,dbo.DetalleOrden.precioFinal FROM dbo.ordenes INNER JOIN dbo.DetalleOrden ON dbo.ordenes.nro_orden = dbo.DetalleOrden.nro_orden WHERE (dbo.ordenes.nro_orden = @nro)", conexion);
  78.            consulta2.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNro.Text));
  79.            SqlDataReader registro2 = consulta2.ExecuteReader();
  80.            DataTable dt = new DataTable();
  81.            dt.Columns.Add("1");
  82.            dt.Columns.Add("2");
  83.            dt.Columns.Add("3");
  84.            dt.Columns.Add("4");
  85.            dt.Columns.Add("5");
  86.            while(registro2.Read())
  87.            {
  88.                dt.Rows.Add(registro2["medicamento"], registro2["cantidad"], registro2["programa"], registro2["precioUnit"], registro2["precioFinal"]);
  89.            }
  90.  
  91.            adaptador = new SqlDataAdapter(consulta2);
  92.  
  93.  
  94.            rgv.Columns[0].FieldName = "1";
  95.            rgv.Columns[1].FieldName = "2";
  96.            rgv.Columns[2].FieldName = "3";
  97.            rgv.Columns[3].FieldName = "4";
  98.            rgv.Columns[4].FieldName = "5";
  99.  
  100.            rgv.DataSource = dt.DefaultView.AsParallel();
  101.  
  102.  
  103.  
  104.            conexion.Close();
  105.  
  106.            }
  107.  
  108.  
  109.        }
  110.  
  111.        private void radButton4_Click(object sender, EventArgs e)
  112.        {
  113.            DialogResult result = RadMessageBox.Show(this, "SEGURO QUE DESEA SALIR?", "SALIR", MessageBoxButtons.OKCancel);
  114.            RadMessageBox.SetThemeName("ATENCION");
  115.            this.Text = result.ToString();
  116.  
  117.            if (result == DialogResult.OK)
  118.            {
  119.                ConsultarOCspp2 c = new ConsultarOCspp2();
  120.                this.Close();
  121.            }
  122.            else if (result == DialogResult.Cancel)
  123.            {
  124.  
  125.            }
  126.        }
  127.  
  128.        private void radButton5_Click(object sender, EventArgs e)
  129.        {
  130.            foreach (GridViewRowInfo row in rgv.SelectedRows)
  131.            {
  132.                rgv.Rows.Remove(row);
  133.            }
  134.        }
  135.  
  136.        private void radButton2_Click(object sender, EventArgs e)
  137.        {
  138.  
  139.        }
  140.        private void radButton3_Click_1(object sender, EventArgs e)
  141.        {
  142.            if (txtCant.Text == "" || txtProg.Text == "" || txtPrecio.Text == "")
  143.            {
  144.                RadMessageBox.SetThemeName("ATENCION");
  145.                DialogResult ds = RadMessageBox.Show(this, "DEBE COMPLETAR TODOS LOS CAMPOS", "ATENCION", MessageBoxButtons.OK, RadMessageIcon.Exclamation);
  146.                this.Text = ds.ToString();
  147.  
  148.            }
  149.            else
  150.  
  151.                if (txtCant.Text != "" || txtProg.Text != "" || txtPrecio.Text != "")
  152.                {
  153.  
  154.                    string medicamento = comboMed.Text;
  155.                    int cantidad = int.Parse(txtCant.Text);
  156.                    string programa = txtProg.Text;
  157.                    float precio = float.Parse(txtPrecio.Text);
  158.                    rgv.Rows.Add(medicamento, cantidad, programa, precio, cantidad * precio);
  159.                    radButton5.Enabled = true;
  160.  
  161.                }
  162.        }
  163.  
  164.               }
  165.    }code]


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: problema al eliminar y agregar registros d radGridView
« Respuesta #1 en: 5 Mayo 2015, 05:33 am »

Hay dos problemas en el código que has mostrado.

El primer problema es que estás intentando modificar una secuencia paralela, que al asignarla cómo datasource es de solo lectura.
Citar
Código
  1. ...
  2. rgv.DataSource = dt.DefaultView.AsParallel();
  3. ...

Y el segundo problema es que estás intentando modificar dos colecciones que están sincronizadas entre sí (RadGridView.Rows <> RadGridView.SelectedRows):
Citar
Código
  1. ...
  2. foreach (GridViewRowInfo row in rgv.SelectedRows)
  3. ...



Solución al primer problema es no usar el paralelismo ya que tienes pensado modificar la colección.
Código
  1. ...
  2. rgv.DataSource = dt.DefaultView
  3. ...

Solución al segundo problema es desactivar las notificaciones del control/colecciones.
Código
  1. using (RadGridView1.DeferRefresh())
  2. {
  3. foreach (GridViewRowInfo row in RadGridView1.SelectedRows) {
  4. RadGridView1.Rows.Remove(row);
  5. }
  6. }  // El método RadGridView.DeferRefresh() internamente es lo mismo que utilizar RadGridView.BeginUpdate() + RadGridView.EndUpdate(), pero de un modo elegante.

Saludos


« Última modificación: 5 Mayo 2015, 05:37 am por Eleкtro » En línea

SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: problema al eliminar y agregar registros d radGridView
« Respuesta #2 en: 5 Mayo 2015, 05:41 am »

perdón elektro justo estaba escribiendo el post para contar q solucione el primer problema(el de añadir filas)cuando vi tu respuesta pero keria compartir el código xa ver tu opinion:
Código
  1. private void radButton3_Click_1(object sender, EventArgs e)
  2.        {
  3.            if (txtCant.Text == "" || txtProg.Text == "" || txtPrecio.Text == "")
  4.            {
  5.                RadMessageBox.SetThemeName("ATENCION");
  6.                DialogResult ds = RadMessageBox.Show(this, "DEBE COMPLETAR TODOS LOS CAMPOS", "ATENCION", MessageBoxButtons.OK, RadMessageIcon.Exclamation);
  7.                this.Text = ds.ToString();
  8.  
  9.            }
  10.            else
  11.  
  12.                if (txtCant.Text != "" || txtProg.Text != "" || txtPrecio.Text != "")
  13.                {
  14.  
  15.                    string medicamento = comboMed.Text;
  16.                    int cantidad = int.Parse(txtCant.Text);
  17.                    string programa = txtProg.Text;
  18.                    float precio = float.Parse(txtPrecio.Text);
  19.                    float precFinal = cantidad * precio;
  20.                    dt.Rows.Add(medicamento,cantidad,programa,precio,precFinal);
  21.                    rgv.DataSource = dt;
  22.                    radButton5.Enabled = true;
  23.  
  24.                }
en cuanto al segundo problema pondré en practica ahora mismo tu solución 1000000 d grax y perdón x las molestias....slds!
En línea

SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: problema al eliminar y agregar registros d radGridView
« Respuesta #3 en: 5 Mayo 2015, 06:03 am »

m salio el mismo error d solo lectura.....m falta algo?
Código
  1. private void radButton5_Click(object sender, EventArgs e)
  2.        {
  3.            using (rgv.DeferRefresh())
  4.            {
  5.                foreach (GridViewRowInfo row in rgv.SelectedRows)
  6.                {
  7.                    rgv.Rows.Remove(row);
  8.                }
  9.            }
  10.  
  11.  
  12.        }
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: problema al eliminar y agregar registros d radGridView
« Respuesta #4 en: 5 Mayo 2015, 06:44 am »

Que raro.

Especifica el tipo de excepción, y el mensaje exacto de error.

Comprueba el valor de la propiedad dt.Rows.IsReadonly y del rgv.Rows.IsReadOnly antes de iterar la colección, ¿alguno es True? :-\.

En caso afirmativo, no se por que te sucede eso, pero para intentar solucionarlo no intentes eliminar las filas del rgv, declara el dt fuera de método y modifica el rgv.DataSource (es decir, elimina las filas directamente en el dt), los cambios se verán reflejados en el rgv.

Prueba así:
Código
  1. Dim dt As DataTable
  2. Dim dtCopy As DataTable
  3.  
  4. Private Sub test()
  5.  
  6.    dt = New DataTable
  7.    ' añadir columnas, añadir filas...
  8.  
  9.    dtCopy = dt.Copy()
  10.    rgv.DataSource = dtCopy.DefaultView
  11.  
  12. End Sub
  13.  
  14. Private Sub RadButton1_Click(sender As Object, e As EventArgs) _
  15. Handles RadButton1.Click
  16.  
  17.    If dtCopy.Rows.IsReadOnly() Then
  18.        Throw New Exception("dtCopy row col es de solo lectura")
  19.  
  20.    ElseIf rgv.Rows.IsReadOnly Then
  21.        Throw New Exception("rgv row col es de solo lectura")
  22.  
  23.    Else
  24.        Using rgv.DeferRefresh()
  25.  
  26.            For Each row As GridViewRowInfo In rgv.SelectedRows.ToArray
  27.                dtCopy.Rows.Remove(DirectCast(row.DataBoundItem, DataRowView).Row)
  28.            Next row
  29.  
  30.        End Using
  31.  
  32.    End If
  33.  
  34. End Sub

Código
  1. DataTable dt;
  2. DataTable dtCopy;
  3.  
  4. private void test()
  5. {
  6. dt = new DataTable();
  7. // añadir columnas, añadir filas...
  8.  
  9. dtCopy = dt.Copy();
  10. rgv.DataSource = dtCopy.DefaultView;
  11. }
  12.  
  13. private void RadButton1_Click(object sender, EventArgs e)
  14. {
  15. if (dtCopy.Rows.IsReadOnly()) {
  16. throw new Exception("dtCopy row col es de solo lectura");
  17.  
  18. } else if (rgv.Rows.IsReadOnly) {
  19. throw new Exception("rgv row col es de solo lectura");
  20.  
  21. } else {
  22. using (rgv.DeferRefresh()) {
  23. foreach (GridViewRowInfo row in rgv.SelectedRows.ToArray) {
  24. dtCopy.Rows.Remove(((DataRowView)row.DataBoundItem).Row);
  25. }
  26. }
  27. }
  28. }
« Última modificación: 5 Mayo 2015, 07:14 am por Eleкtro » En línea

SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: problema al eliminar y agregar registros d radGridView
« Respuesta #5 en: 6 Mayo 2015, 06:45 am »

buenas noches ha funcionado a la perfeccion.........se q me vas a regañar xq va contra las reglas del foro pero MUCHISIMAS GRACIAS ELEKTRO
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: problema al eliminar y agregar registros d radGridView
« Respuesta #6 en: 6 Mayo 2015, 09:47 am »

se q me vas a regañar xq va contra las reglas del foro pero MUCHISIMAS GRACIAS ELEKTRO

Sería incapaz de "regañar" por ese motivo, no soy un monstruo, jaja. Es cierto que esa norma existe peeeeeeeero... es un tabú :P.

Me alegro de que te haya servido de ayuda.

PD: Eso si, intenta marcar tus temas cómo resueltos utilizando el icono de .

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Agregar carácter a registros de un campo
Bases de Datos
rob1104 3 7,332 Último mensaje 16 Marzo 2010, 07:59 am
por rob1104
Cambiar nombre default que se coloca al agregar registros a windows
Programación Visual Basic
.:UND3R:. 1 2,358 Último mensaje 18 Junio 2011, 23:03 pm
por seba123neo
Eliminar registros repetidos dejando 1
Bases de Datos
Shell Root 2 3,292 Último mensaje 20 Septiembre 2013, 05:11 am
por Shell Root
Eliminar y reemplazar registros en Array
.NET (C#, VB.NET, ASP)
luis456 3 3,658 Último mensaje 15 Enero 2014, 20:40 pm
por Eleкtro
eliminar registros con ceros
.NET (C#, VB.NET, ASP)
luis456 5 3,426 Último mensaje 12 Noviembre 2014, 12:35 pm
por luis456
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines