按下按钮时更新列表视图

问题描述:

我有两个列表视图,其中一个显示数据,另一个显示数据(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);”我的数据没有输入,所以这是行不通的。我应该用什么来取得这项工作?

在此先感谢!

+0

您不必重定向。要绑定第二个列表,在同一个事件上调用list2.DataBind(),ItemInserted – 2012-04-01 21:19:03

处理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(); 

    // .... 
} 

希望你的想法。如果没有,请随时询问。

+0

OP没有提到,但我有他/她使用DataSource控件 – 2012-04-01 19:49:33

+0

@AdrianIftode的感觉,可能是这种情况。但是,我没有给他一个完整的解决方案,只是想给他关于如何实现他的目标的想法。现在由他来修改他的具体情况的代码。 – walther 2012-04-01 19:51:49

+0

是的,我使用的是一个DataSource控件,并且数据被插入到我的数据库中,但要在我的其他表(listview)中看到它,我需要更新它,例如删除一个项目..然后我看到插入的项目。 – 2012-04-01 19:57:08