2010-11-25 2 views
0

У меня есть функция, чтобы заполнить список всех таблиц с первичными ключами в выбранной БД из выпадающего списка:Выделенный текст в поле со списком не возвращает значение

public void PrimaryKeyTable() 
{ 

    //An instance of the connection string is created to manage the contents of the connection string. 

    var sqlConnection = new SqlConnectionStringBuilder(); 
    sqlConnection.DataSource = "192.168.10.3"; 
    sqlConnection.UserID = "gp"; 
    sqlConnection.Password = "gp"; 
    sqlConnection.InitialCatalog = Convert.ToString(cmbDatabases.SelectedValue); 
    string connectionString = sqlConnection.ConnectionString; 

    SqlConnection sConnection = new SqlConnection(connectionString); 

    //To Open the connection. 
    sConnection.Open(); 

    string selectPrimaryKeys = @"SELECT 
             TABLE_NAME 
            FROM 
             INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
            WHERE 
             CONSTRAINT_TYPE = 'PRIMARY KEY' 
           ORDER BY 
             TABLE_NAME"; 

    //Create the command object 
    SqlCommand sCommand = new SqlCommand(selectPrimaryKeys, sConnection); 

    try 
     { 
     //Create the dataset 
     DataSet dsListOfPrimaryKeys = new DataSet("INFORMATION_SCHEMA.TABLE_CONSTRAINTS"); 

     //Create the dataadapter object 
     SqlDataAdapter sDataAdapter = new SqlDataAdapter(selectPrimaryKeys, sConnection); 

     //Provides the master mapping between the sourcr table and system.data.datatable 
     sDataAdapter.TableMappings.Add("Table", "INFORMATION_SCHEMA.TABLE_CONSTRAINTS"); 

     //Fill the dataset 
     sDataAdapter.Fill(dsListOfPrimaryKeys); 

     //Bind the result combobox with primary key tables 
     DataViewManager dvmListOfPrimaryKeys = dsListOfPrimaryKeys.DefaultViewManager; 
     cmbResults.DataSource = dsListOfPrimaryKeys.Tables["INFORMATION_SCHEMA.TABLE_CONSTRAINTS"]; 
     cmbResults.DisplayMember = "TABLE_NAME"; 
     cmbResults.ValueMember = "TABLE_NAME"; 
     } 
    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); 
     } 
    finally 
     { 
     //If connection is not closed then close the connection 
     if(sConnection.State != ConnectionState.Closed) 
      { 
      sConnection.Close(); 
      } 
     } 
} 

Теперь я хочу, чтобы вызвать эту функцию а нажатие кнопки, как это:

private void btnStartAnalysis_Click(object sender, EventArgs e) 
    { 
     //This is the function call for the primary key checking in DB 
     PrimaryKeyTable(); 
    } 

Сво работает нормально, но когда я хочу вызвать его на кнопку мыши, когда конкретный текст выбирается из выпадающего списка, как это:

private void btnStartAnalysis_Click(object sender, EventArgs e) 
    { 
     //This is the function call for the primary key checking in DB 
     if(cmbOperations.SelectedText == "PrimaryKeyTables") 
      { 
      PrimaryKeyTable(); 
      } 
    } 

Тогда это не дает никакого результата ...

Может кто-нибудь сказать, где я иду не так?

ответ

3

я думаю, вы должны заменить

if(cmbOperations.SelectedText == "PrimaryKeyTables") 

с

if((string)cmbOperations.SelectedValue == "PrimaryKeyTables") 
+0

+1 Это правильно. Свойство 'SelectedText' представляет текст, который выбран в редактируемой части выпадающего списка, как и в текстовом поле. Если для параметра 'DropDownStyle' установлено значение' DropDownList', то не будет * * любого текста. 'SelectedValue' вернет нужную строку. –

+0

IT WORKS FINE DUDE – Srivastava

4

Использовать SelectedItem вместо SelectedText. И затем используйте ToString(), чтобы получить строковое значение.

Смежные вопросы