页面的删除按钮在GRIDVIEW的外部,如何调用GRIDVIE中的删除事件呢?
我想将GRIDVIEW隐藏内部的删除列,然后在外部的按钮点击事件中调用,但是发现隐藏的删除控件找不到,求救如何解决?
还有即使能调用了,还出现重载均与委托“System.EventHandler”不匹配的问题,如何解决?
谢谢!

解决方案 »

  1.   

    建议用datalist 那么就可以用外部删除
      

  2.   


    谢谢提醒,但是还是想知道如何通过GRIDVIEW实现
      

  3.   

    既然是隐藏列了 并且还不用 干嘛不在 DataSet 里面删掉啊 ,并且隐藏列也 看不到啊 删掉干嘛可以用   this.dataGridView1.Columns.RemoveAt(0); 删除列    
      

  4.   

    如果删除按钮在GridView外面,如何确定要删除GridView的那一行呢?按常理是给GridView前加复选框然后    protected void btnDelete_Click(object sender, EventArgs e)
        {
            string whereClause = string.Empty;
            CheckBox chk;
            foreach (GridViewRow r in GridView1.Rows)
            {
                chk = (CheckBox)r.FindControl("chkSelect");
                if (chk != null)
                {
                    if (chk.Checked)
                    {
                       //拼接sql语句                    
                    }
                }
            }
            if (whereClause != string.Empty)
            {
                SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=sa;database=pubs");
                string strSQL = "delete from authors where au_id in (" + whereClause + ")";
                SqlCommand cmd = new SqlCommand(strSQL, cn);
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
            }
            BindGrid();
        }
      

  5.   


    我知道这样能实现删除的功能,我现在需要实现这样的功能:
    选择一条记录后,点击删除,弹出删除确认框进行删除确认,
    但是如果你不选择一条记录,直接点击删除,此时应该弹出警告对话框,提示用户“请选择一条记录”,而不是删除确认对话框,又如何实现呢?谢谢
    所有我想用外面的删除按钮调用GRIDVIEW内部的删除事件
      

  6.   


    不明白你的意思?对于GRIDVIEW外面的删除按钮事件我需要达到的效果如下:
    选择一条记录后,点击删除,弹出删除确认框进行删除确认,
    但是如果你不选择一条记录,直接点击删除,此时应该弹出警告对话框,提示用户“请选择一条记录”,而不是删除确认对话框,又如何实现呢?谢谢
    所有我想用外面的删除按钮调用GRIDVIEW内部的删除事件
      

  7.   

      protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
        {
            //delete
            Response.Write("删除.....");
        }
        //button[delete]
        protected void Button1_Click(object sender, EventArgs e)
        {        GridView1_RowDeleted(sender, null);
        }只能这样用。但是 有个问题就是 GridViewDeletedEventArgs  e 的属性都无效了。 因为传入的是NULL一般不建议这样不同类型的外部调用。
      

  8.   


    如果楼主是这个想法的话,只有自己构造Object(sender)和GridViewDeletedEventArgs 的实例了,应该还是可行的。否则没有相关参数,调用的事件就没有办法与相关数据关联,无法触发。
      

  9.   

    我想将GRIDVIEW隐藏内部的删除列,然后在外部的按钮点击事件中调用,但是发现隐藏的删除控件找不到,求救如何解决?  ??
    啥是 隐藏内部的删除列 ??   啥是 隐藏的删除控件??   很
    听不懂啊你是不是想用按钮把 被隐藏的列 删掉啊?
      

  10.   

    这是我写的代码片段 ,没有异常处理 能用的话自己加上
     定义个选择列的变量  ]
     public int index=-2; DataGridView 的cellClick 事件
      获得要删除的列序号
      private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                this.index = e.ColumnIndex; 
            } 删除函数      
      public void delete()     //public void  delete(ref DataGridView,int index) 可以自己扩展
            {
                if (this.index == -2)
                {
                    MessageBox.Show("请选定要删除的列!", "提示", MessageBoxButtons.OKCancel);
                }
                else
                {
                    MessageBox.Show("确定要删除?", "提示", MessageBoxButtons.OKCancel);
                    
                    if (this.index > dataGridView1.Columns.Count - 1 || this.index < 0)
                    {   
                        if(dataGridView1.Columns.Count==0  )
                            MessageBox.Show("都没列了还删啊!");
                        else 
                        MessageBox.Show("删除失败");
                        return;
                    }
              
         上面的代码用个 try  catch 处理吧  我写的简单
          this.dataGridView1.Columns.RemoveAt(this.index);   
                    
                }
            }
    不知道满足你的要求了没
      

  11.   

    最好还是加上复选框,要不delete事件不知道你要删除哪一个
      

  12.   

    我在外部的按钮处理函数里面GridView.Rows.Count的值总是0,而GridView是显示数据的。
    我怀疑能不能调用