组合框中的选定文本未返回任何值

时间:2010-11-25 10:48:43

标签: c# .net winforms combobox

我有一个函数可以从下拉列表中选择所选数据库中包含主键的所有表的列表:

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 个答案:

答案 0 :(得分:4)

使用SelectedItem而不是SelectedText。然后使用ToString()来获取字符串值。

答案 1 :(得分:3)

我认为你应该替换

if(cmbOperations.SelectedText == "PrimaryKeyTables")

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