按下按钮时更新列表视图
我有两个列表视图,其中一个显示数据,另一个显示数据(InsertItemTemplate)。当第一个按钮被点击并且数据输入到数据库中时,我希望另一个更新。按下按钮时更新列表视图
这是我试过到目前为止:
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Add movie" OnClick="InsertButton_OnClick" />
而在aspx文件:
protected void InsertButton_OnClick(object sender, EventArgs e)
{
Response.Redirect(Request.RawUrl);
}
当我用 “的Response.Redirect(Request.RawUrl);”我的数据没有输入,所以这是行不通的。我应该用什么来取得这项工作?
在此先感谢!
处理ItemInserted
事件并从InsertButton中删除OnClick="InsertButton_OnClick"
。
我相信这个问题是因为Click事件先被触发,然后是冒泡事件(在这种情况下为ItemInserted)。重定向终止任何代码执行。
您需要实际推送/插入数据到数据库。按钮只会触发一个事件,但所有你做的反应是,你将页面重定向到它自己。
所以,你应该做这样的事情:
protected void InsertButton_OnClick(object sender, EventArgs e)
{
InsertDataToDatabase();
ReloadListViews();
}
虽然方法InsertDataToDatabase()将推动数据到数据库。它可以是这个样子:
private void InsertDataToDatabase()
{
using (myDataContext db = new myDataContext())
{
Book b = new Book();
b.Title = "Some title from selected textbox";
b.Year = DateTime.Today.Year;
db.Books.AddObject(b);
db.SaveChanges();
}
}
和你的方法ReloadListViews():
private void ReloadListViews()
{
listView1.DataSource = SomeDbClass.GetItems();
listView1.DataBind();
listView2.DataSource = SomeDbClass2.GetItems2();
listView2.DataBind();
// ....
}
希望你的想法。如果没有,请随时询问。
OP没有提到,但我有他/她使用DataSource控件 – 2012-04-01 19:49:33
@AdrianIftode的感觉,可能是这种情况。但是,我没有给他一个完整的解决方案,只是想给他关于如何实现他的目标的想法。现在由他来修改他的具体情况的代码。 – walther 2012-04-01 19:51:49
是的,我使用的是一个DataSource控件,并且数据被插入到我的数据库中,但要在我的其他表(listview)中看到它,我需要更新它,例如删除一个项目..然后我看到插入的项目。 – 2012-04-01 19:57:08
您不必重定向。要绑定第二个列表,在同一个事件上调用list2.DataBind(),ItemInserted – 2012-04-01 21:19:03