2009-03-27 5 views
0

Ceci est mon code Il fonctionne pour si 1 terminal qui a 3 services mais il ne fonctionne pas pour plus de 3 services quand je fais alors j'ai message d'erreur suivant:InvalidArgument = La valeur de '3' n'est pas valide pour 'rowIndex'

InvalidArgument = valeur de « 3 » est pas valable pour « rowIndex »

J'ai tellement fatigué de trouver ce problème, mais n'a pas pu obtenir des solutions. Quelqu'un s'il vous plaît aidez-moi.

MySqlCommand command = new MySqlCommand("VTerminalsLoad");//Procedure 
MySqlDataAdapter terminalAdapter = this.Database.ExecuteCommand(command); 
terminalAdapter.Fill(dataSet, "Terminals"); 

command = new MySqlCommand("VTServicesLoad");//Procedure 
command.Parameters.Add(new MySqlParameter("pVesselID", 1)); 
MySqlDataAdapter serviceAdapter = this.Database.ExecuteCommand(command);//Return Adaptor 
serviceAdapter.Fill(dataSet, "Services"); 

DataColumn[] parentColumns = { dataSet.Tables[0].Columns["SerialNo"], 
      dataSet.Tables[0].Columns["VesselID"], 
      dataSet.Tables[0].Columns["TerminalID"] }; 

DataColumn[] childColumns = { dataSet.Tables[1].Columns["SerialNo"], 
      dataSet.Tables[1].Columns["VesselID"], 
      dataSet.Tables[1].Columns["TerminalID"] }; 

DataRelation relationTS = new DataRelation("TerminalsServices", parentColumns, childColumns); 
dataSet.Relations.Add(relationTS); 

//Parent Table 
ListTerminal.DataSource = dataSet;  //ListTerminal Parent datagridview 
ListTerminal.DataMember = "Terminals"; 

//Child Table 
ListServices.DataSource = dataSet;// ListServices Child datagridview 
ListServices.DataMember = "Terminals.TerminalsServices"; 
+0

Utilisez-vous "3" quelque part sur une collection zéro de 3 éléments, où les index seraient 0, 1 et 2, mais pas 3? – DOK

+0

Sur quelle ligne avez-vous cette exception? – Eddie

Répondre

2

Voir http://connect.microsoft.com/VisualStudio/feedback/details/116413/datagridview-exception-with-readonly-cells

Ce problème sera apparaît lorsque: 1. DataGridView se lient à un DataRelation 2. Vous essayez de définir un DataGridViewCell dans la première rangée à ReadOnly, avant "BindingCompleted" (par exemple, : en cas de RowsAdded datagridview)

Vous pouvez résoudre ce problème en retarder l'opération ReadOnly-réglage jusqu'à BindingCompleted

Hope this peut aider toi.

+0

Le lien que vous avez demandé nécessite un login ... boo. – Andrew

Questions connexes