日期:2014-05-18  浏览次数:20484 次

不好描述的一个问题
页面上有三个控件:
DropdownList 已绑定到数据源
Textbox 用于接受用户输入  
Button 点击之后将Textbox的text存入数据库(也就是DropdownList的数据源),
现在我的问题是:
在点击Button之后,DropdownList不能立即添加Item(重新绑定数据源),只能在页面关闭,再重新启动程序时才能显示出新加的Item!
1、我没有在Page_load事件中做IsPostback判断,做了判断也应该一样,是吧?点击按钮之后肯定是回发了,我觉得。
2、是不是数据绑定只在页面第一次加载时进行,之后无论如何都不会进行了呢?我测试的结果是这样的。如果有不同意见,回帖讨论!
3、为了解决这个问题,我在Button点击事件里再加一句
  this.DropDownList1.Items.Add(this.TextBox1.Text);
  
结果出现了一个新问题,我在执行以上语句时必须得判断数据库操作是否成功。
但我用的是存储过程,ExecuteNonQuery之后无论成功与否,返回值都是-1,无法进行有效判断。

终于翘翘了,怎么办?

感觉网上类似功能的实现很多的,他们是用什么解决的?先JavaScript,再数据库操作?

------解决方案--------------------
首先,dropdownlist的autopostback="true"
其次,在button事件末尾重新绑定下dropdownlist的数据
------解决方案--------------------
你看看你IE的缓存设置有没有问题。。。。
------解决方案--------------------
如果你的button点击后就操作数据库将新的值插入数据库的话,那么在执行完这个操作后,重新给dropdownlist赋下数据源,并绑定一次就可以了.

 代码类似于(以下是伪代码,大概是这个样子去操作):

Page_Load()
{
if(!IsPostBack)
{
BindDropDownList()
}
}
Button_click()
{
//新的Item插入DB

//BindDropDownList();
}
BindDropDownList()
{
ddl1.DataSource=你从db来的数据.
ddl1.DataBind();
}
------解决方案--------------------
在点击Button之后重新绑定一下DropDownList的数据
------解决方案--------------------
探讨
如果你的button点击后就操作数据库将新的值插入数据库的话,那么在执行完这个操作后,重新给dropdownlist赋下数据源,并绑定一次就可以了.

代码类似于(以下是伪代码,大概是这个样子去操作):

Page_Load()
{
if(!IsPostBack)
{
BindDropDownList()
}
}
Button_click()
{
//新的Item插入DB

//BindDropDownList();
}
BindDropDownList()
{ …