首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridView“”GridView1“”激发了未处理的事件RowDeleting,但存在事件

GridView“”GridView1“”激发了未处理的事件RowDeleting,但存在事件
EN

Stack Overflow用户
提问于 2013-04-07 05:53:05
回答 4查看 29.1K关注 0票数 0

ı一直在尝试使用and控件、委托和ADO来创建动态控制面板。甚至ı也编写了删除和编辑事件的委托,面临着"The GridView 'GridView1‘fired event RowDeleting which handled.“问题。有人能帮我吗?这是我的代码

代码语言:javascript
复制
    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;
        }
    }
}

//我的webform

代码语言:javascript
复制
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));   
    }
EN

回答 4

Stack Overflow用户

发布于 2013-04-08 06:19:18

您发布的代码是不完整的(缺少aspx文件代码),从您对问题的描述中,听起来好像您没有将RowDeleting事件分配给GridView1。

在aspx文件的开始gridview标记内,按如下方式添加赋值:

代码语言:javascript
复制
<asp:gridview ID="..." runat="server" ... OnRowDeleting="<name of event handler>" ...>

如果事件处理程序ControlPanel_RowDeleting设计用于处理从网格视图中删除操作,则将其作为事件处理程序名称插入。确保在删除后重新绑定网格视图,以便在回发时显示更改。

代码语言:javascript
复制
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();
}
票数 2
EN

Stack Overflow用户

发布于 2017-10-12 00:38:16

您正在尝试使用删除按钮的命令名 delete 。因此网格视图会自动创建一个行删除事件...

您需要将命令参数从更改为其他参数,如Delete_Product或您想要的任何内容……

票数 2
EN

Stack Overflow用户

发布于 2013-11-19 17:03:50

GridView的好处之一是它提供了一个内置的CommandField按钮,允许我们执行某些操作,如编辑,更新,删除和选择GridView数据。

要添加GridView中提到的那些命令字段,可以执行以下几个步骤: 1.切换到设计视图2.右键单击GridView并选择-->显示智能标记-->添加新列3.在列表中选择CommandField 4.选中删除和编辑/更新选项,然后单击确定

正如您所看到的,编辑和删除CommandField会自动添加到GridView的最后一列中。现在,我们可以开始编写代码来编辑和更新GridView中的信息。

为了在GridView中执行编辑和更新,我们需要使用三个事件( GridView_RowEditing,GridView_RowCancelingEdit,GridView_RowUpdating)。对于那些不知道如何在GridView中生成事件的人,可以按照以下步骤进行操作:

  1. 切换到Visual Studio Designer中的设计视图
  2. 单击指向GridView属性窗格的GridView
  3. Navigate,然后切换到Event Properties
  4. From在那里您将能够找到事件列表,其中包括上述三个事件
  5. 双击该事件可为您生成事件处理程序
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15856463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档