我有一个GridView控件,我启用了编辑功能。
我的编辑&更新按钮都是LinkButtons,如下所示:
<asp:LinkButton ID="buttonEdit" runat="server" Text="Edit" CausesValidation="false"
CommandName="Edit" />
<asp:LinkButton ID="buttonUpdate" runat="server" CausesValidation="True"
CommandName="Update" Text="Update" ValidationGroup="Edit" />
当用户点击编辑按钮时,其中一列有一个允许编辑记录的文本框:
<EditItemTemplate>
<asp:TextBox ID="textBoxEdit" runat="server" Text='<%#Eval("Name") %>' />
<asp:Label ID="labelEditWarning" CssClass="error" runat="server" Text="Name already exists" Visible="false" />
</EditItemTemplate>
当用户单击“更新”链接按钮时,将触发网格的RowCommand事件。在这里,我想对数据库中的现有记录执行验证。如果验证失败,那么什么停止网格的RowUpdating事件发射,但似乎没有办法做到这一点!?
protected void gridName_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Edit"))
{
//Perform validation & cancel update if the validation fails.
}
}
protected void gridName_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//Update my record. But I don't want this to fire if my validation fails in
//the row command event.
}
有人可以帮忙吗?
我正在使用ASP.Net 4.0
提前致谢。
答案 0 :(得分:1)
将'buttonUpdate'上的CommandName从'Update'更改为'rename'之类的内容。这将停止触发RowUpdating事件。然后,您可以在RowCommand事件中添加一些代码来处理记录的验证和更新,例如
protected void gridName_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("rename"))
{
if(validation == true)
{
DatabaseDataContext data = new DatabaseDataContext();
string rowID = e.CommandArguement.ToString();
var rowToUpdate = data.TableOne.Where(d => d.ID.ToString() == rowID);
rowToUpdate.Name = newName;
data.SubmitChanges();
}
else
{
//Set error label
}
}
}
您还需要将Button的CommandArguement更改为:
<asp:LinkButton ID="buttonUpdate" runat="server" CausesValidation="True"
CommandName="Update" CommandArguement='<%# Eval("ID") %>' Text="Update" ValidationGroup="Edit" />
答案 1 :(得分:0)
您可以更新gv_RowCommand事件
示例代码:
protected void gridName_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="Edit")
{
//Perform validation & cancel update if the validation fails.
}
if(your validtaion successconditon flag set true)
{
if (e.CommandName == "Update")
{
}
}
}
答案 2 :(得分:0)
您也可以使用GridViewUpdateEventArg的取消属性取消更新。
e.g。
protected void GridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Your validation logic goes here...
// If validation logic fails...
e.Cancel = true;
}