我有一个带onrowdeleting="SellersGridView_RowsDeleting"
开关的gridview。
我的方法是:
protected void SellersGridView_RowsDeleting(object sender, GridViewDeleteEventArgs e)
{
string seller = ((Label)SellersGridView.Rows[e.RowIndex].Cells[0].FindControl("TextBoxSeller")).Text;
BookStore b = new BookStore();
b.LoadFromXML(Server.MapPath("list.xml"));
string ISBN = Request.QueryString["ISBN"].ToString();
int ID = b.BooksList.FindIndex(x => x.ISBN == ISBN);
Book myBook = b.BooksList[ID];
myBook.RemoveSeller(seller);
Response.Redirect("editbook.aspx?ISBN=" + ISBN);
}
好吧,似乎当我尝试删除任何内容时 - 没有任何反应。我试图将第一行更改为Response.Redirect("foo")
只是为了检查事件本身是否被触发,事实证明它没有。我无法理解。
这是我的gridview控件:http://pastebin.com/CKDAMECT 这是我的代码隐藏代码:http://pastebin.com/ShBtwGEu
非常感谢!
答案 0 :(得分:2)
答案 1 :(得分:0)
在所有谈话之后,我看到表单不包含所有asp.net控件。请解决这个问题。
另外你给表单一个名字!,只有** run = **服务器和** id = ** whatid。 该名称可能会阻止正确的提交数据。
第二个如果不发回火,那么如果没有问题就是表格,那么一些javascript会阻止它开火,也许是验证(我不这么认为,但你永远不知道)。
因此请检查表格以便开始。 - 必须包含asp.net的所有内容。
答案 2 :(得分:0)
XML区分大小写。 ASP.NET也是如此。确保您的属性正确套装。
或者,确保正确设置了DataKey属性。
答案 3 :(得分:0)
如果您的网页没有回发,那么gridview按钮会导致其他控件的验证? 尝试使用模板列更改按钮字段,使用causavalidation = false
更改linkbutton / immage按钮答案 4 :(得分:-1)
在我的Page_Load代码中,您似乎只是在第一次加载页面时将数据绑定到GridView一次。 当回发提升时,服务器不记得网格中的行,也无法触发删除事件的处理。
尝试移动代码
SellersGridView.DataSource = myBook.Sellers;
SellersGridView.DataBind();
从if (!IsPostback)
部分出来。在这种情况下,您将每次都填充网格。