从dropDownlist控件返回字符串

时间:2012-11-30 09:02:49

标签: c# asp.net visual-studio-2008

我知道这是一个非常基本的问题,我试图在选定的索引更改时从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();
    }


}

或许建议。

2 个答案:

答案 0 :(得分:2)

我假设您在此行上的连接对象NullRefernceException上获得了conn

OleDbCommand cmd = conn.CreateCommand();

请记住,所有对象(也是您的name变量)都放在当前页面生命周期的末尾。您可以使用控件的ViewState来维护回发之间的值,例如: SelectedValue的{​​{1}}属性。

您还应该在使用它的地方创建连接,并在完成后立即处理它,最好使用DropDownList - 语句。否则,其他线程(请求)需要在它仍处于打开状态时创建新的物理连接:

using

答案 1 :(得分:0)

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

string name= (string)drpMinisters.SelectedItem;

如果您想要组合框文本区域中的文本,请使用SelectedText属性