Поиски после LostFocus, находят, но не приносят мне данных

Добрый вечер друзья я упрощаю один из моих процессов в системе, так как у меня есть формуляр (frmventas) что обладает некоторыми TextBox как: txtidarticulo, txtnombre, txtcantidad, txtprecio между другими. в txtidarticulo существует кнопка рядом btnbuscar, этот называет формуляр (frmMostrar_articulos) с одной grid один combobox и один textbox где combobox у него есть два выбора поисков: código, nombre и botón только выдай то, что выбрано, с которым он говорит в textbox, он это показывает в grid и дав ему dobleclic в информацию загрузь оставшуюся часть информации в ящик текста, упомянутый раньше (frmventas). поскольку они видят для практики, человек, который будет искать 10 продуктов, - очень длинный процесс. Я стараюсь делать то же самое в событии LostFocus txtidarticulo он находит их, но не размещает информации в остальных ящиках текста Вашего собственного формуляра. это - то, что у меня есть: первый слой:

public DataTable MostrarArticulo_Venta_codigo(String TextoBuscar)
{
    DataTable DtResultado = new DataTable("articulos");
    SqlConnection SqlCon = new SqlConnection();
    try
    {
        SqlCon.ConnectionString = Conexion.Cn;
        SqlCommand SqlCmd = new SqlCommand();
        SqlCmd.Connection = SqlCon;
        SqlCmd.CommandText = "spbuscararticulo_venta_codigo";
        SqlCmd.CommandType = CommandType.StoredProcedure;

        SqlParameter ParTextoBuscar = new SqlParameter();
        ParTextoBuscar.ParameterName = "@textobuscar";
        ParTextoBuscar.SqlDbType = SqlDbType.VarChar;
        ParTextoBuscar.Size = 50;
        ParTextoBuscar.Value = TextoBuscar;
        SqlCmd.Parameters.Add(ParTextoBuscar);

        SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd);
        SqlDat.Fill(DtResultado);

    }
    catch (Exception ex)
    {
        DtResultado = null;
    }
    return DtResultado;

}

второй слой:

public static DataTable MostrarArticulo_Venta_Codigo(string textobuscar)
{
    DVenta Obj = new DVenta();
    return Obj.MostrarArticulo_Venta_codigo(textobuscar);
}

и это событие третьего слоя cbbuscar что видится, было, чтобы играть грязно я разместил текст: "код" и visible= false и благодаря этому он ищет, но, который не правильная практика:

private void txtIdarticulo_LostFocus(object sender, System.EventArgs e)
{
    if (cbBuscar.Text.Equals("Codigo"))
    {
        this.MostrarArticulo_Venta_Codigo();
    }

    FrmVenta form = FrmVenta.GetInstancia();
        string par1, par2;
        decimal par3, par4;
        int par5;
        DateTime par6;
        par1 = Convert.ToString(this.dataListado.CurrentRow.Cells["iddetalle_ingreso"].Value);
        par2 = Convert.ToString(this.dataListado.CurrentRow.Cells["nombre"].Value);
        par3 = Convert.ToDecimal(this.dataListado.CurrentRow.Cells["precio_compra"].Value);
        par4 = Convert.ToDecimal(this.dataListado.CurrentRow.Cells["precio_venta"].Value);
        par5 = Convert.ToInt32(this.dataListado.CurrentRow.Cells["stock_actual"].Value);
        par6 = Convert.ToDateTime(this.dataListado.CurrentRow.Cells["fecha_vencimiento"].Value);
        form.setArticulo(par1, par2, par3, par4, par5, par6);

}




 public void setArticulo (string iddetalle_ingreso,string nombre,
        decimal precio_compra,decimal precio_venta,int stock,
        DateTime fecha_vencimiento)
    {
        this.txtIdarticulo.Text = iddetalle_ingreso;
        this.txtArticulo.Text = nombre;
        this.txtPrecio_Compra.Text = Convert.ToString(precio_compra);
        this.txtPrecio_Venta.Text = Convert.ToString(precio_venta);
        this.txtStock_Actual.Text = Convert.ToString(stock);
        this.dtFecha_Vencimiento.Value = fecha_vencimiento;
    }

после breakpoint:

[luego de hacer <code>breakpoint</code>

но DataTable он как будто он не был активным, другая вещь изменила событие в TextChanged из-за которого в lostFocus даже он не был включен, но должна быть решена вещь одновременно

1
задан 22.04.2017, 00:30
1 ответ

Сначала ты должен санкционировать, что твой DataTable содержал данные.

Он Изменяет ты cГіdigo следующего способа:

private void txtIdarticulo_LostFocus(object sender, System.EventArgs e)
{
    if (cbBuscar.Text.Equals("Codigo"))
    {
        this.MostrarArticulo_Venta_Codigo();
    }

    FrmVenta form = FrmVenta.GetInstancia();
    string par1, par2;
    decimal par3, par4;
    int par5;
    DateTime par6;

    // Comprueba primero que tu datatable tenga datos:
    if (dataListado != null && dataListado.Rows.Count > 0) 
    {
        par1 = Convert.ToString(this.dataListado.CurrentRow.Cells["iddetalle_ingreso"].Value);
        par2 = Convert.ToString(this.dataListado.CurrentRow.Cells["nombre"].Value);
        par3 = Convert.ToDecimal(this.dataListado.CurrentRow.Cells["precio_compra"].Value);
        par4 = Convert.ToDecimal(this.dataListado.CurrentRow.Cells["precio_venta"].Value);
        par5 = Convert.ToInt32(this.dataListado.CurrentRow.Cells["stock_actual"].Value);
        par6 = Convert.ToDateTime(this.dataListado.CurrentRow.Cells["fecha_vencimiento"].Value);
        form.setArticulo(par1, par2, par3, par4, par5, par6);
    }
    else 
    {
        MessageBox.Show("No hay datos.");
    }   
}

IrГ© издавая этот ответ ты, чтобы пробовать помогать.

0
ответ дан 24.11.2019, 12:11
  • 1
    Совершенный эти выходные я кладусь в этом большое спасибо – Gilberto Asuaje 17.12.2016, 01:38