我对asp.net GridView有一个奇怪的问题.我有一个绑定到
LinqDataSource的GridView.在GridView的行删除事件中,我将从数据库中删除该行,但不刷新网格(即使在绑定到数据源之后).
当我放置一个断点时,我可以看到在LinqDS_Selecting事件之后触发了OnRowDeleting事件.但删除事件后它不再被解雇!这可能是原因吗?我究竟做错了什么?
请有人帮忙.提前谢谢了.
.aspx文件:
<asp:LinqDataSource
ID="LinqDS"
runat="server"
OnSelecting="LinqDS_Selecting">
</asp:LinqDataSource>
<asp:GridView
DataSourceID = "LinqDS"
ID = "gv1"
runat = "server"
DataKeyNames = "InstructionId"
EnableViewState = "false"
OnRowDataBound = "gv1_RowDataBound"
OnRowDeleting = "gv1_RowDeleting"
OnRowCommand = "gv1_RowCommand"
PageSize = "30" >
<Columns>
<!-- My colums --->
</Columns>
</asp:GridView>
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LinqDS_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
// my linq to sql query
var query = from .... .... ;
e.Result = query;
}
protected void gv1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int instructionId = (int)gv1.DataKeys[e.RowIndex].Value;
/// my delete logic
CTX.SubmitChanges();
gv1.DataBind();
}
最佳答案 如果您的记录实际上已被正确删除,并且网格只是没有显示更改,我会尝试将GridView放在UpdatePanel中,看看是否有帮助.
<asp:UpdatePanel runat="server" UpdateMode="Always">
<ContentTemplate>
// GridView
</ContentTemplate>
</asp:UpdatePanel>