Выбранный текст в поле со списком не возвращает никакого значения - PullRequest
0 голосов
/ 25 ноября 2010

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

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();
            } 
    }

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

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

Ответы [ 2 ]

4 голосов
/ 25 ноября 2010

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

3 голосов
/ 25 ноября 2010

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

if(cmbOperations.SelectedText == "PrimaryKeyTables")

с

if((string)cmbOperations.SelectedValue == "PrimaryKeyTables")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...