我有两个列表视图,一个显示数据,另一个插入数据(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 :(得分: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();
// ....
}
希望你能得到这个想法。如果没有,请随时询问。