none
Error 1 'System.Windows.Forms.TextBox' no contiene una definición de 'DataSource' ni se encontró ningún método de extensión 'DataSource' que acepte un primer argumento de tipo 'System.Windows.Forms.TextBox' (¿falta una directiva using o una referencia de RRS feed

  • Pregunta

  • este es el codigo

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Laboratorio
    {
        public partial class frmFactura : Form
        {
            public frmFactura()
            {
                InitializeComponent();
            }

            private void frmFactura_Load(object sender, EventArgs e)
            {
                txtCantidad.Text = "1";
                var Funciones = new Recursos.ClassFunciones();
                txtVendedor.DataSource = Funciones.ListarVendedores();
                txtVendedor.DisplayMember = "venUsuario";
                txtVendedor.ValueMember = "VenId";

                txtCliente.DataSource = Funciones.ListarClientes();
                txtCliente.DisplayMember = "cliNombre";
                txtCliente.ValueMember = "cliId";

                txtArticulo.DataSource = Funciones.ListarProductos();
                txtArticulo.DisplayMember = "proNombre";
                txtArticulo.ValueMember = "proCodigo";

            }

            private void btnAgregarProducto_Click(object sender, EventArgs e)
            {
                var Funciones = new Recursos.ClassFunciones();
                int Codigo = Convert.ToInt16(txtArticulo.SelectedValue.ToString());
                String Articulo = txtArticulo.Text;
                String Cantidad = txtCantidad.Text;
                int Valor = Funciones.ConsultarPrecio(Codigo); ;
                dgvFacturaDetalle.Rows.Add(Codigo,Articulo, Cantidad,Valor);
                int NumeroFilas = dgvFacturaDetalle.Rows.Count;
                int ValorTotal = 0;
                if (NumeroFilas>1)
                {
                    for (int i = 0; i < (NumeroFilas-1); i++)
                    {
                       int Can = Convert.ToInt16(dgvFacturaDetalle.Rows[i].Cells[2].Value.ToString());
                       int Val = Convert.ToInt16(dgvFacturaDetalle.Rows[i].Cells[3].Value.ToString());
                       ValorTotal += Can * Val;
                    }
                    txtTotal.Text = ValorTotal.ToString();
                }
                else
                {
                    txtTotal.Text = Valor.ToString();
                }
            }

            private void btnFacturar_Click(object sender, EventArgs e)
            {
                int NumeroFilas = dgvFacturaDetalle.Rows.Count;
                DateTime date = txtFecha.Value;
                int Cliente = Convert.ToInt16(txtCliente.SelectedValue.ToString());
                int Vendedor = Convert.ToInt16(txtVendedor.SelectedValue.ToString());
                int ValorTotal = Convert.ToInt16(txtTotal.Text.ToString());
                var RegistrarFactura = new Recursos.ClassFactura(date , Cliente, ValorTotal, Vendedor);
                int UltimaFactura = RegistrarFactura.Registrar();
                for (int i = 0; i < (NumeroFilas-1); i++)
                {
                    int Articulo = Convert.ToInt16(dgvFacturaDetalle.Rows[i].Cells[0].Value.ToString());
                    int Cantidad = Convert.ToInt16(dgvFacturaDetalle.Rows[i].Cells[2].Value.ToString());
                    var AgregarProducto = new Recursos.ClassFacturaDetalle(UltimaFactura, Articulo, Cantidad);
                }
                System.Windows.Forms.MessageBox.Show("La factura se registro exitosamente");
            }
        }
    }

                
    sábado, 23 de marzo de 2019 2:59

Todas las respuestas

  • Hola dennisper:

    Dado que en base al código expuesto, no se ve lo que hacen las funciones que utilizas, ni has marcado el punto exacto que te genera el error, ni tampoco se puede asegurar los controles que usas de que tipo son por el nombre genérico que les das, puedes rodear tus métodos con bloques try catch, de manera, que sepas cual es el punto donde "rompe", y realizas una traza, para saber la linea.

    A partir de esto, comentas como te ha ido.

    Como depurar paso a paso

    https://docs.microsoft.com/es-es/visualstudio/debugger/debugger-feature-tour?view=vs-2017

    • Propuesto como respuesta Carlos_Ruiz_M jueves, 28 de marzo de 2019 15:47
    sábado, 23 de marzo de 2019 7:11
  • Fíjate en que hay varios sitios del código en los que tienes líneas como esta:

    txtVendedor.DataSource = ...

    Es decir, estás intentando asignar un valor a la propiedad DataSource del TextBox. Pero el TextBox no tiene ninguna propiedad que se llame DataSource. Por eso te sale el mensaje de error que te sale.

    El DataSource se usa con los controles que son capaces de presentar múltiples datos, tales como un ComboBox o un DataGrid, porque de esa manera el control enumera todos los registros que hay en el DataSource y va sacando los datos. Pero con un TextBox no tiene ningún sentido, porque el TextBox solo es capaz de presentar un único dato (no varios registros). Ese único dato hay que calcularlo previamente, y entonces se le mete en su propiedad .Text.

    sábado, 23 de marzo de 2019 7:19
    Moderador