protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    try
    {
        string experienceID = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
        this.s = base.Session["Login"] as SessionLogin;
        this.pType = PowerType.DocumentRemove;
        new Experience().GetCatalogIDByExperienceID(experienceID);
        string statuByExperienceID = new Experience().GetStatuByExperienceID(experienceID);
        if (this.s.MType != 0)
        {
            if (!this.pow.HasFilePower(this.s.Id, experienceID, this.pType))
            {
                MessageBox.myShow(this, "delete", "您无权限执行此操作!");
            }
            else if (statuByExperienceID == "0")
            {
                if (new Experience().DeleteExperience(experienceID))
                {
                    MessageBox.myShow(this, "delete2", "删除成功!");
                }
                else
                {
                    MessageBox.myShow(this, "delete3", "删除失败!");
                }
            }
            else
            {
                MessageBox.myShow(this, "edit", "文档已锁定!");
            }
        }
        else if (new Experience().DeleteExperience(experienceID))
        {
            MessageBox.myShow(this, "delete2", "删除成功!");
        }
        else
        {
            MessageBox.myShow(this, "delete3", "删除失败!");
        }
        this.BindExperience();
    }
    catch (Exception)
    {
        MessageBox.myShow(this, "exec", "删除失败!");
    }
}  

解决方案 »

  1.   

    不要用goto,用switch{case}
    还有,代码太多,关键代码找不到在哪里
    你在哪里判断的某个id可以执行什么权限??
      

  2.   

    我就是想知道,我定义的权限判定是不是有问题。这段代码就是对文档的解锁和删除进行判断。如果是登陆者,并且是创建文档的人if (!this.pow.HasFilePower(this.s.Id, experienceID, this.pType)),那么就可以进行操作,不过现在成了只要是登陆者就可以删除和解锁
      

  3.   

    每一项messagebox后面加上return
    否则对话框是弹出了,可是最后的
            this.BindExperience();还是要执行
      

  4.   

    如果需要return的地方太多
    你可以在最开始定义个bool变量,然后在if里给它赋值
    最后执行语句的时候判断这个变量
      

  5.   

    但是我觉得这个return可写可不写吧。