Problema con un Combobox dentro de un dataGridView.
Publicado por Esteban (2 intervenciones) el 22/10/2018 17:53:04
¡¡¡Buenas!!!.
Tengo un datagridview en mi proyecto,y he incluído dentro de este un Combobox. La situación es que tengo un fichero secuencial de entrada, con información relativa a clientes, y deseo extraer información del mismo, tal como el nombre, el código de operación, la cuenta y el importe. Pero claro, un cliente puede tener una o más cuentas a su nombre, por lo que necesito un Combobox para mi DataGridView.
Para eso he creado una clase dentro de mi clase:
Y en el proceso relleno mi variable ComboAccount con los datos de AccountCmr la cual está definida como List<string>:
Y cuando pulso el botón para rellenar todo el DataGridView:
Los datos de mi datagridview son estáticos. Su contenido es el siguiente:
Header text DataPropertyName ColumnType Width MaxDropDownItems
--------------------------------------------------------------------------------------------------------------------------------------------
Customer Name CustomeName DataGridViewTextBoxColumn 275
Customer Op. CustomeOp DataGridViewTextBoxColumn 105
Customer Account CustomeAccount DataGridViewComboBoxColumn 220 15
Customer Amount CustomeAmount DataGridViewTextBoxColumn 100
Por tanto, cuando ejecuto mi programa, por cada línea de mi dataGridView y, cuando las cuentas a la información relativa de cada cliente se van a informar, Visual Studio da un error:
La siguiente excepción ocurrió en dataGridView: System.ArgumentException. El valor del datagridview no es válido. Para reemplazar este cuadro de diálogo predeterminado controle el evento dataerror.
¿¿¿Porqué???, ¿¿¿qué debo de cambiar para que el programa funcione y la columna del Combobox pueda ser informada con las cuentas de los clientes???.... Porque yo puedo controlar el evento dataerror y este desaparece, pero no es lo mismo, la columna del combobox está vacia, por lo que no está bien hecho.
Muchas gracias.
Adjunto archivo con el problema, para mayor comprensión.
Tengo un datagridview en mi proyecto,y he incluído dentro de este un Combobox. La situación es que tengo un fichero secuencial de entrada, con información relativa a clientes, y deseo extraer información del mismo, tal como el nombre, el código de operación, la cuenta y el importe. Pero claro, un cliente puede tener una o más cuentas a su nombre, por lo que necesito un Combobox para mi DataGridView.
Para eso he creado una clase dentro de mi clase:
1
2
3
4
5
6
7
public class TransferAction
{
public string CustomeName { get; set; }
public string CustomeOp { get; set; }
public DataGridViewComboBoxColumn CustomeAccount { get; set; }
public decimal CustomeAmount { get; set; }
}
Y en el proceso relleno mi variable ComboAccount con los datos de AccountCmr la cual está definida como List<string>:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public List<TransferAction> GenerateModel(List<Q43Base> input)
{
Catalog catalog = Globals.GetCatalog();
catalog.Customers.Download(Program.ServiceSecurityKey);
List<CustomerItem> customerChildren = catalog.Customers.GetChildren();
List<TransferAction> actios = new List<TransferAction>();
foreach (var register in input)
{
if (register.Id == Q43Movement.ID)
{
if (CustomeData == true)
{
DataGridViewComboBoxColumn ComboAccount = new DataGridViewComboBoxColumn();
this.GenerateCustomer();
AccountCmr = catalog.Customers.FCustomer(customerChildren, ChainCustomer, Program.ServiceSecurityKey);
foreach(string acc in AccountCmr)
{
ComboAccount.Items.Add(acc);
}
actios.Add(new TransferAction() { CustomeName = this.ChainCustomer, CustomeOp =
this.ChainOperation, CustomeAccount = ComboAccount, CustomeAmount = this.Amount });
.............
Y cuando pulso el botón para rellenar todo el DataGridView:
1
2
3
4
5
6
7
8
9
private void ButtonGenerateActions_Click(object sender, EventArgs e)
{
if (inputModelQ43.Count > 0)
{
CustomerTransfersManagement ctm = new CustomerTransfersManagement();
List<TransferAction> mimodeloTransformado = ctm.GenerateModel(inputModelQ43);
dataGridView1.DataSource = mimodeloTransformado;
}
}
Los datos de mi datagridview son estáticos. Su contenido es el siguiente:
Header text DataPropertyName ColumnType Width MaxDropDownItems
--------------------------------------------------------------------------------------------------------------------------------------------
Customer Name CustomeName DataGridViewTextBoxColumn 275
Customer Op. CustomeOp DataGridViewTextBoxColumn 105
Customer Account CustomeAccount DataGridViewComboBoxColumn 220 15
Customer Amount CustomeAmount DataGridViewTextBoxColumn 100
Por tanto, cuando ejecuto mi programa, por cada línea de mi dataGridView y, cuando las cuentas a la información relativa de cada cliente se van a informar, Visual Studio da un error:
La siguiente excepción ocurrió en dataGridView: System.ArgumentException. El valor del datagridview no es válido. Para reemplazar este cuadro de diálogo predeterminado controle el evento dataerror.
¿¿¿Porqué???, ¿¿¿qué debo de cambiar para que el programa funcione y la columna del Combobox pueda ser informada con las cuentas de los clientes???.... Porque yo puedo controlar el evento dataerror y este desaparece, pero no es lo mismo, la columna del combobox está vacia, por lo que no está bien hecho.
Muchas gracias.
Adjunto archivo con el problema, para mayor comprensión.
Valora esta pregunta


0