按下按钮时更新列表视图

时间:2012-04-01 19:36:58

标签: c# asp.net

我有两个列表视图,一个显示数据,另一个插入数据(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);”时我的数据没有输入,所以不起作用。我该怎么用才能让它发挥作用?

提前致谢!

2 个答案:

答案 0 :(得分:1)

处理ItemInserted事件并从InsertButton中删除OnClick="InsertButton_OnClick"

我认为问题是因为Click事件首先被触发,然后是冒泡事件(在这种情况下为ItemInserted)。重定向终止任何代码执行。

答案 1 :(得分:0)

您需要实际将数据推送/插入数据库。按钮仅启动一个事件,但您所做的一切反应是,您将页面重定向到自身。

所以,你应该这样做:

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

   // ....
}

希望你能得到这个想法。如果没有,请随时询问。