![](/img/trans.png)
[英]The GridView 'OrdersGridView' fired event RowDeleting which wasn't handled
[英]The GridView 'GridView1' fired event RowDeleting which wasn't handled , but there is an event
ı一直在使用webusercontrol,委托和ADO创建动态控制面板。 甚至我已经编写了删除和编辑委托的程序,遇到了“未处理的GridView'GridView1'触发事件RowDeleting。”问题。 有人可以帮我吗,这是我的密码
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = this.DataSource;
GridView1.DataBind();
GridView1.DataKeyNames = new string[] { this.DataKeyNames };
}
public object DataSource { get; set; }
public string DataKeyNames { get; set; }
public event GridHander RowDeleting;
public event GridHander RowSawing;
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow gvr = ((LinkButton)e.CommandSource).Parent.Parent as GridViewRow;
int rowIndex = gvr.RowIndex;
object id = GridView1.DataKeys[rowIndex].Value;
switch (e.CommandName)
{
case "Edit":
GridView1.EditIndex = rowIndex;
break;
case "Delete":
if (RowDeleting != null)
{
GridEventArgs args = new GridEventArgs()
{
row=gvr,
id=id,
rowIndex=rowIndex
};
RowDeleting.Invoke(e.CommandSource, args);
}
break;
case"Save":
if (RowSawing != null)
{
GridEventArgs args = new GridEventArgs()
{
row = gvr,
id = id,
rowIndex = rowIndex
};
RowSawing.Invoke(e.CommandSource, args);
}
GridView1.EditIndex = -1;
break;
case "Cancel":
GridView1.EditIndex = -1;
break;
default:
break;
}
}
}
//我的网络表单
ublic partial class CategoryControlPanel : System.Web.UI.Page
{
CategoryResposite _categoryResposite=new CategoryResposite();
protected void Page_Load(object sender, EventArgs e)
{
ControlPanel.DataSource = _categoryResposite.ListCategories();
ControlPanel.RowDeleting += ControlPanel_RowDeleting;
ControlPanel.RowSawing += ControlPanel_RowSawing;
}
void ControlPanel_RowSawing(object sender, GridEventArgs e)
{
throw new NotImplementedException();
}
void ControlPanel_RowDeleting(object sender, GridEventArgs e)
{
_categoryResposite.DeleteCategories(Convert.ToInt32(e.id));
}
您发布的代码不完整(缺少aspx文件代码),从对问题的描述来看,好像您没有将RowDeleting事件分配给GridView1一样。
在aspx文件的打开的gridview标记内,按如下所示添加分配:
<asp:gridview ID="..." runat="server" ... OnRowDeleting="<name of event handler>" ...>
如果事件处理程序ControlPanel_RowDeleting设计为处理从gridview动作中删除的事件,则将其插入为事件处理程序名称。 确保删除后重新绑定gridview,以便更改显示在回发中。
protected void ControlPanel_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// cancel the automatic delete action
e.Cancel = true;
// do the delete
_categoryResposite.DeleteCategories(Convert.ToInt32(e.id));
// complete delete action
GridView1.DataBind();
}
您正在尝试使用命令名称Delete来删除按钮。 因此,gridview自动创建一个行删除事件。
您需要将命令参数从Delete更改为Delete_Product之类的东西或您想要的任何东西...
GridView的优点之一是它提供了一个内置的CommandField Button,它使我们能够执行某些操作,例如GridView数据的编辑,更新,删除和选择。
要添加GridView中提到的那些命令字段,您可以按照以下几步操作:1.切换到设计视图2.右键单击GridView并选择->显示智能标签->添加新列3.在列表中选择CommandField 4.选中“删除”和“编辑/更新”选项,然后单击“确定”
如您所见,Edit和Delete CommandField会自动添加到GridView的最后一列中。 现在,我们可以开始编写代码以编辑和更新GridView中的信息。
为了在GridView中执行编辑和更新,我们需要使用三个事件(GridView_RowEditing,GridView_RowCancelingEdit和GridView_RowUpdating)。 对于那些不知道如何在GridView中生成事件的人,可以按照以下步骤操作:
尝试在方法签名中添加protected。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.