C# 从dropDownlist控件返回字符串

C# 从dropDownlist控件返回字符串,c#,asp.net,visual-studio-2008,C#,Asp.net,Visual Studio 2008,我有一个我意识到的非常基本的问题,我试图在选定索引更改时从DropDownList的选定值返回一个字符串值,但由于某些或其他原因它没有发生 protected void drpMinisters_SelectedIndexChanged(object sender, EventArgs e) { name = drpMinisters.SelectedValue; LabMessage.Text = name; } 当我尝试向数据库添加名称时,我得到一个NullReferen

我有一个我意识到的非常基本的问题,我试图在选定索引更改时从DropDownList的选定值返回一个字符串值,但由于某些或其他原因它没有发生

protected void drpMinisters_SelectedIndexChanged(object sender, EventArgs e)
{
    name = drpMinisters.SelectedValue;
    LabMessage.Text = name;

}
当我尝试向数据库添加名称时,我得到一个NullReferenceException

protected void butSubmitMinister_Click(object sender, EventArgs e)
{
    int index = drpMinisters.SelectedIndex;
    if (index == 0)
    {
        LabMessage.Text = "Please select a minister";
        return;
    }
    try
    {
        OleDbCommand cmd = conn.CreateCommand();
        cmd.CommandText = @"INSERT INTO MinisterTable(MinisterName)VALUES(" + name + "')";
        cmd.ExecuteNonQuery();

        LabMessage.Text = "The record was successfully added";
        conn.Close();
    }
    catch (Exception ex)
    {
        LabMessage.Text = ex.ToString();
    }


}

可能是建议。

我假设您在这一行的连接对象
conn
上得到了
nullreferenceexception

OleDbCommand cmd = conn.CreateCommand();
请记住,所有对象(以及
名称
变量)都是在当前页面生命周期结束时处理的。您可以使用控件的ViewState跨回发维护值,例如
DropDownList的
SelectedValue
属性

您还应该在使用连接的地方创建连接,并始终在完成后立即进行处理,最好使用
using
-语句。否则,其他线程(请求)需要创建新的物理连接,只要该连接仍然打开:

string sql = "INSERT INTO MinisterTable(MinisterName) VALUES(@MinisterName);";
using(var con = new OleDbConnection(connectionString))
using(var cmd = new OleDbCommand(sql, con))
{
    cmd.Parameters.AddWithValue("@MinisterName", drpMinisters.SelectedValue);
    con.Open();
    cmd.ExecuteNonQuery();
}

我不认为你的问题在于数据库部分,它实际上在于你如何从下拉列表中获取所选的值。如果您想获取实际出现在下拉列表中的字符串值,那么应该使用以下命令

string name= (string)drpMinisters.SelectedItem;

如果要在组合框的文本区域中显示文本,请使用SelectedText属性

是否表示未触发selectedIndex事件?请提供更多详细信息。是的,奇怪的是,selectedIndex似乎没有启动selectedIndex\u更改不会启动,当值字段在后续选择中具有相同的值时。尝试在下拉列表中具有唯一的选定值。可能存在的重复项