GriveView RowCommand 使用的问题
<asp:GridView ID="gvUserInfo" runat="server" Width="100%" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" OnPageIndexChanging="gvUserInfo_PageIndexChanging" OnRowCommand="gvUserInfo_RowCommand" ><Columns>
<asp:TemplateField HeaderText="编辑">
<ItemTemplate>
<asp:ImageButton ID="btnEdit" runat="server" ImageUrl="~/Admin/Images/button_edit.gif" CommandName="btnEdit"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:ImageButton ID="btnDelete" runat="server" CommandName="btnDel" ImageUrl="~/Admin/Images/button_del.gif" OnClientClick="return confirm('确定要删除吗?');" ></asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
cs
protected void gvUserInfo_RowCommand(object sender, GridViewCommandEventArgs e)
{
string btn = e.CommandName;
switch (btn)
{
case "btnEdit":
int index1 = Convert.ToInt32(e.CommandArgument); //我们可以通过e.CommandArgument来取得行的索引
int userID1 = int.Parse(gvUserInfo.Rows[index1].Cells[8].Text.Trim());
Response.Redirect("../UserUpdate.aspx?userID=" + userID1);
break;
case "btnDel":
int index2 = Convert.ToInt32(e.CommandArgument); //我们可以通过e.CommandArgument来取得行的索引
int userID2 = int.Parse(gvUserInfo.Rows[index2].Cells[8].Text.Trim());
//构造用户后进行删除
WShopping.Accounts.Bus.User currentUser2 = new WShopping.Accounts.Bus.User(userID2);
currentUser2.Delete();
break;
}
UserBind(); //用户绑定
}
在GrivdView中 我加了两个按钮 一个是编辑按钮跳到另一个页面, 一个删除按钮进行删除。 并没有用RowDeleting事件,而是通过CommandName 在RowCommand中 进行判断处理。但是就是出不来结果,还提示
“回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
”
<%@ Page > 中加了 enableEventValidation="false". 再次运行没有提示错误, 但就是不能 删除 和跳转页面。只是刷新了下页面,不知道怎么回事。 在RowCommand事件中 加入断点,也不能跟踪到。 请老大们帮我分析下 --------------------编程问答-------------------- 是不是onclientclick有什么问题,去掉onclientclick,看看能不能进断点 --------------------编程问答-------------------- --------------------编程问答-------------------- 检查一下int index1 = Convert.ToInt32(e.CommandArgument)有没有值。。跟踪一下string btn = e.CommandName; 很可能没有进switch
补充:.NET技术 , ASP.NET