我知道这是一个非常基本的问题,我试图在选定的索引更改时从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();
}
}
或许建议。
答案 0 :(得分:2)
我假设您在此行上的连接对象NullRefernceException
上获得了conn
:
OleDbCommand cmd = conn.CreateCommand();
请记住,所有对象(也是您的name
变量)都放在当前页面生命周期的末尾。您可以使用控件的ViewState来维护回发之间的值,例如: SelectedValue
的{{1}}属性。
您还应该在使用它的地方创建连接,并在完成后立即处理它,最好使用DropDownList
- 语句。否则,其他线程(请求)需要在它仍处于打开状态时创建新的物理连接:
using
答案 1 :(得分:0)
我不认为你的问题在于数据库部分,它实际上在于你如何从下拉列表中获取所选值。如果你想获得实际出现在下拉列表中的字符串值,那么你应该使用以下内容。
string name= (string)drpMinisters.SelectedItem;
如果您想要组合框文本区域中的文本,请使用SelectedText属性