Foros del Web » Programación para mayores de 30 ;) » .NET »

Dolor de Cabeza con C# DataGridView

Estas en el tema de Dolor de Cabeza con C# DataGridView en el foro de .NET en Foros del Web. Hola amigos de Foros del Web, este es mi 1° post en este gran foro. Consulte el bscador para que no se repita mi consulta, ...
  #1 (permalink)  
Antiguo 09/06/2010, 15:17
 
Fecha de Ingreso: junio-2010
Mensajes: 1
Antigüedad: 12 años, 1 mes
Puntos: 0
Dolor de Cabeza con C# DataGridView

Hola amigos de Foros del Web, este es mi 1° post en este gran foro. Consulte el bscador para que no se repita mi consulta, y hay algunas parecidas y otras que no entiendo o no me sirven

Les cuento como dice mi titulo, estoy haciendo mi practica, y estoy haciendo un pequeño programa en C# en VS 2008 y casi todo el programa es en Base a DataGridView's.

Yendo al grano, mi datagridview se cuelga de una BD SQL Server y los mando a un dgv mediante un filtro (que me filtre por fecha), eso me sale.

Ahora mi duda es como puedo eliminar esos registros que me arroja el filtro, he visto que se puede pinchando 1 por 1 pero encuentro que eso es un poco lento, yo lo que quiero es que despues de poner en el boton buscar y que me arroje los datos, despues con un boton eliminar esos mismos que me arrojo la consulta, he visto muchos codigos y la mayoria no los entiendo, ya que soy nuevo en esto.

Les adujnto mi codigo, que es el de buscar por fecha de vencimiento:


public partial class EliminarInstrumento : Form
{
public EliminarInstrumento()
{
InitializeComponent();
}

private SqlDataAdapter misqlDa; //Adaptador de Datos
private SqlConnection miConexion; //Objeto Conexión
private DataSet miDt; //Conjunto de Datos
private string miCadenaConexion; //Cadena de Conexion al Servidor SQL
private string consulta; //Consulta para mostrar en el datagridview
private BindingSource datosBS; //Recurso de datos

private void btnBuscar_Click(object sender, EventArgs e)
{
try
{
if (txtFecha.Text == "")
{
MessageBox.Show("Debe Ingresar una fecha", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
else
{
Conectar();
consulta = "SELECT * FROM " + Convert.ToString(cmbFondos.SelectedItem) + " where Vcto = convert(datetime, '" + txtFecha.Text + "',103);";
misqlDa = new SqlDataAdapter(consulta, miConexion);
miDt = new DataSet();

datosBS = new BindingSource();

misqlDa.Fill(miDt, "Datos");
datosBS.DataSource = miDt;
datosBS.DataMember = "Datos";

dataGridView1.DataSource = datosBS;

label4.Visible = true;
label4.Text = "Esta en el Fondo : " + Convert.ToString(cmbFondos.SelectedItem);
}
}
catch
{
MessageBox.Show("POSIBLES ERRORES:- No selccionó Fondo - Ingreso Letras - La Fecha es Invalida", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtFecha.Text = "";
cmbFondos.Text = "...Elija un Fondo";
}
}

public void Conectar()
{
try
{
miCadenaConexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Document s and Settings\\*********\\Mis documentos\\Matriz Nueva\\Matriz_nueva.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
miConexion = new SqlConnection(miCadenaConexion);
miConexion.Open();
}
catch (SqlException ex)
{
MessageBox.Show("No se pudo conectar al servidor");
}
}

Ojala lo puedan entender y que alguien de buena voluntad me pueda ayudar.

Saludos a todos.

Última edición por kriztoval; 09/06/2010 a las 15:40
  #2 (permalink)  
Antiguo 10/06/2010, 03:10
Avatar de KeiDash  
Fecha de Ingreso: septiembre-2005
Mensajes: 114
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Dolor de Cabeza con C# DataGridView

Lo más sencillo es que, una vez filtrado, recorras el datagrid y en un for elimines cada uno de los registros de grid, que no es lo mismo que recorrer el dataset. Quédate con cada fila y con esa filas ovtienes los datos que almacena, que serán los mismos que en la BD, a partir de ahi empiezas a eliminar:

dtgView.Rows(x).. .... y ve haciendo un delete con un SQLCommand en cada instrucción del recorrido.

Etiquetas: csharp, datagridview, eliminar
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 05:38.