2010-11-26 3 views
0

J'ai un combobox qui suit les éléments insérésLes éléments statiquement insérés dans combobox double sur le clic de bouton pour plus d'une fois

public void SetOperationDropDown() 
    { 
    //ByDefault the selected text in the cmbOperations will be -SELECT OPERATIONS-. 
    cmbOperations.SelectedItem = "-SELECT OPERATIONS-"; 

    //This is for adding four operations with value in operation dropdown 
    cmbOperations.Items.Insert(0, "PrimaryKeyTables"); 
    cmbOperations.Items.Insert(1, "NonPrimaryKeyTables"); 
    cmbOperations.Items.Insert(2, "ForeignKeyTables"); 
    cmbOperations.Items.Insert(3, "NonForeignKeyTables"); 
    cmbOperations.Items.Insert(4, "UPPERCASEDTables"); 
    cmbOperations.Items.Insert(5, "lowercasedtables"); 
    } 

Mais que l'utilisateur clique sur le bouton plus d'une fois la valeur sera doublé ou tout chose indésirable arrive à la valeur.

le bouton clic

private void btnConnect_Click(object sender, EventArgs e) 
    { 
    //Function call for validating the textboxes entry 
    ValidateForm(); 

    //Variable to store server address 
    string localHost = "192.168.10.3"; 

    //Variable to store userId and password of the database 
    string logInDetails = "gp"; 

    try 
     { 
     //Checking for the Valid entries in textboxes if all entries are correct then call functions accordingly 
     if((txtPassword.Text == logInDetails) && (txtUsername.Text == logInDetails) && (txtHost.Text == localHost)) 
      { 

      //If connected then give this message to user 
      lblMessage.Visible = true; 
      lblMessage.Text = "You are connected to the SQL Server...."; 

      if(lblMessage.Text != string.Empty) 
       { 
       //Function call for binding the dropdown with all DB names 
       BindDBDropDown(); 

       //Function call for binding the operation names in dropdown 
       SetOperationDropDown(); 

       } 
      } 
     else 
      { 
      //Else give the error message to user 
      lblMessage.Text = "Invalid Credentials"; 
      } 
     } 
    catch(Exception ex) 
     { 
     //All the exceptions are handled and written in the EventLog. 
     EventLog log = new EventLog("Application"); 
     log.Source = "MFDBAnalyser"; 
     log.WriteEntry(ex.Message); 
     } 
    } 

Quelqu'un peut-il me aider?

+0

Quelle valeur est doublée? Et pouvez-vous expliquer un peu plus en détail ce qu'est une «chose indésirable»? –

+0

les éléments dans le cmbOperations – Srivastava

Répondre

1
public void SetOperationDropDown() 
{ 
if(CmbOperations.Items.Count == 0) 
{ 
//ByDefault the selected text in the cmbOperations will be -SELECT OPERATIONS-. 
cmbOperations.SelectedItem = "-SELECT OPERATIONS-"; 
//This is for adding four operations with value in operation dropdown 
cmbOperations.Items.Insert(0, "PrimaryKeyTables"); 
cmbOperations.Items.Insert(1, "NonPrimaryKeyTables"); 
cmbOperations.Items.Insert(2, "ForeignKeyTables"); 
cmbOperations.Items.Insert(3, "NonForeignKeyTables"); 
cmbOperations.Items.Insert(4, "UPPERCASEDTables"); 
cmbOperations.Items.Insert(5, "lowercasedtables"); 


} 
else 
{ 
int? cbSelectedValue = null; 
if(!string.IsNullOrEmpty(cmbOperations.SelectedValue)) 
cbSelectedValue = convert.toInt32(cmbOperations.SelectedValue); 
} 
//load your combo again 
if(cbSelectedValue != null) 
cmbOperations.SelectedValue = cbSelectedValue.ToString(); 
} 

Il peut y avoir de petites erreurs de syntaxe puisque je n'ai pas utilisé VS.

0

appeler uniquement le SetOperationDropDown() lorsque la charge de votre page n'est pas un postback

if (!IsPostBack) { 
    SetOperationDropDown(); 
} 
+0

Ou faire un hack merdique et effacer les éléments avant de remplir le ComboBox: 'cmbOperations.Items.Clear()' :) –

+0

effacer ce n'est pas une bonne idée, car dans ce cas, la valeur «sélectionnée» sera 'oublié' – Stefanvds

+1

'IsPostBack' ne sera pas un concept valide dans une application winforms. –

0

Désactiver le bouton lorsque l'utilisateur clique dessus, réinitialiser le cmbOperations SelectItem à votre valeur « ne rien faire », réactivez le bouton lorsque vous avez terminé le traitement de la demande.

0

Ceci est étiqueté sous WinForms, donc je ne pense pas que les post-retours sont applicables ici. En regardant dans votre méthode btnStartAnalysis_Click, je ne la vois pas appeler SetOperationDropDown. Essayez d'entrer en mode DEBUG et mettez un point d'arrêt dans SetOperationDropDown. Puis cliquez sur votre bouton et voir si votre point de rupture est atteint. Si c'est le cas, reportez-vous à votre trace de pile pour voir d'où SetOperationDropDown est appelé.

Si la balise WinForms est incorrecte et que vous utilisez actuellement WebForms/ASP.NET, faites ce que Stefanvds et Marcel ont suggéré. Mais je pense qu'il est important de savoir où SetOperationDropDown est incorrectement appelé.