在ASP.NET中:
直接在数据库中Delete,然后再绑定一次DataSource
事件:RowDeleteing
在WinFormApp中:
直接在数据库中Delete就可以了,
事件是:UserDeletingRow

解决方案 »

  1.   

    删除按钮的事件 
           private void btn_delete_Click(object sender, EventArgs e)
            {
                DataSet ds1 = new DataSet();
                DataRow dr = ds.Tables[0].Rows[this.userGv.CurrentRow.Index]; //选中的行    
                string ss ="select count(id) as ww from u_menu where id = " + dr["id"];//选中这行的某个值(id为例子)
                SqlCommand cmd = new SqlCommand(ss, con);
                SqlDataAdapter sda1 = new SqlDataAdapter(cmd);
                sda1.Fill(ds1);
                    if (MessageBox.Show("确定要删除所选中的记录吗?", "删除", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        ds.Tables[0].Rows[this.userGv.CurrentRow.Index].Delete();
                        sda.Update(ds.Tables[0]);
                    }
                
    }
      

  2.   

    呵呵,那就不太明确了,我们写程序都是传进这行记录的某个值,然后执行下delete语句就可以返回个行号的话能和ds对应起来吗?学习
      

  3.   

    后台删除代码 
    protected void btnDel_Click(object sender, CommandEventArgs e)
        {
            string connecion1 = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString();
            SqlConnection conn1 = new SqlConnection(connecion1);
            SqlCommand cmd1 = conn1.CreateCommand();
            cmd1.CommandText = "delete   from studentinfo where studentnumber=@studentnumber";
            cmd1.CommandType = CommandType.Text;        cmd1.Parameters.Add("@studentnumber", SqlDbType.NVarChar, 20);
            cmd1.Parameters["@studentnumber"].Value =e.CommandArgument.ToString();
            try
            {
                conn1.Open();
                int result = cmd1.ExecuteNonQuery();
                if (result == 1)
                {
                    Response.Redirect("Access.aspx");
                }
                else
                {
                    Response.Redirect("Fail.aspx");
                }            conn1.Close();        }
            finally
            {
                if (conn1 != null)
                    conn1.Dispose();
            }
            DataBind();
        }
    前台在Columns里加入这
    <asp:TemplateField HeaderText="删除" >
                            <ItemTemplate>
                                <asp:LinkButton ID="btnDel"  runat="server" CommandArgument='<%# Eval("报名编号") %>'  OnCommand="btnDel_Click"  Text="刪除" OnClientClick="return confirm('确认要刪除此行信息吗?')"   />
                            </ItemTemplate>
                       <HeaderStyle Font-Size="12px" />
                       <ItemStyle Font-Size="12px" />
                     </asp:TemplateField> 
      

  4.   

    dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
    删除焦点所在行
      

  5.   

    这是我的程序里拿出来的一点代码,你看看就会了1.BindingNavigator简单绑定DataGridViewthis.bindingSource.DataSource = dt_LM.DefaultView;
    this.grdLetterManage.DataSource = bindingSource;2.发现在如果用bindingNavigatorDeleteItem_Click等事件,这些事件只要被触发,其中的一行就会被删除。所以如果再用this.bindingSource.RemoveCurrent();
             this.bindingSource.EndEdit();就会再次删除一行。所以这里面就没有办法弹出MessageBox来询问是否要真的删除。
    我的做法是:在鼠标按下时处理private void bindingNavigatorDeleteItem_MouseDown(object sender, MouseEventArgs e)
    ...{
     if (this.grdLetterManage.CurrentCell != null)
     ...{
      System.Int32 intRowIndex = this.grdLetterManage.CurrentCell.RowIndex;  if (DialogResult.Yes == MessageBox(...)
      ...{                                
       //.....删除数据库中的话在这里处理
       this.bindingSource.RemoveCurrent();
       this.bindingSource.EndEdit();
      }
      else
      ...{
       //这是关键,不删除的话直接结束编辑
    this.bindingSourceLetter.EndEdit();
      }
     }         

    当然,这只是DataGridView表面的删除,数据库中的未被删除,要删除的话我是自己处理的。 
      

  6.   

      private void btn_delete_Click(object sender, EventArgs e)
            {
                if(MessageBox.Show("确定要删除!","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)==DialogResult.OK)
                {
                   getsqlcmd("delete tb_Grade where GradeID ='"+Convert.ToString(dgvGrade[0,dgvGrade.CurrentCell.RowIndex].Value).Trim()+"'");//调用下面getsqlcmd(string str_sqlstr)函数
                    MessageBox.Show("删除成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                    Grade_Load(sender,e);//刷新窗体
                   
                }
            }
      public void getsqlcmd(string str_sqlstr)
            {
                SqlConnection sqlcon = this.getcon();//调用下面getcon()函数连接数据库
                sqlcon.Open();
                SqlCommand sqlcmd = new SqlCommand(str_sqlstr,sqlcon);
                sqlcmd.ExecuteNonQuery();
                sqlcmd.Dispose();//释放资源
                sqlcon.Close();//关闭数据库连接
                sqlcon.Dispose();//释放资源        } public SqlConnection getcon()
            {
                string str_sql = @"Data Source=.\SQLEXPRESS;Uid=sa;Pwd=xiaosu185996799;Integrated Security=False;Pooling=False;Database=BeautyInfo";
                
                SqlConnection conn = new SqlConnection(str_sql);
                return conn;
            }
      

  7.   

    (1)如果你的DataGridView是没有绑定到DataTable的,那好说
    this.dataGridView1.Rows.Remove(this.dataGridView1.SelectedRows[0]);  // 去掉选中的第一行(2)如果你的DataGridView是绑定到DataTable的,上面的方法就没有用了,你可通过去掉DataTable的行来完成
    假设你的DataTable中有一个叫 ID(int) 的列来标识一行 假定 this.dataGridView1.DataSource = this.dataTable1
    DataGridViewRow dgvr = this.dataGridView1.SelectedRows[0];  // get选中的行
    int id = Convert.ToInt32(dgvr.Cells["ID"].Value);   // get行标识,Cells["ID"] 中的ID如果
                                                               //AutoGenerateColunm = false,由你写的 PropertyName来决定
    this.dataTable1.Rows.Remove(this.dataTable1.Select(string.Format("ID = '{0}'",id))[0]);这是个人的做法,写得不好不要骂
      

  8.   

    到数据库的更新可另写代码楼上兄弟们说的重绑定 个人不赞同, 会带来数据流量大,等待时间和ScrollBar位置等等问题
      

  9.   

    不好意思,我的是因为项目设计要求用BindingNavigator,它自带很多功能,个人感觉很方便,不需要再放几个按钮来操作但11楼的说法确实不太了解,望知道的告诉下小弟
      

  10.   

    vs2005里面的datagridview确实设计得很烂。对不起啊微软的大虾们。
    一般使用datagridview会和bindingnavigator一起使用。通常的想法会是:数据源和datagridview以及bindingnavigator绑定,对数据的操作就使用bindingnavigator的那些按钮。最好不用写代码。因为简单的添加删除保存操作,我们会指望bindingnavigator会帮我们处理掉。
    可惜,vs2005的这两样东西并不能让人省心。那个bindingnavigator基本是个摆设。这个问题在网上不乏100分求解的情况就说明上面所说不虚。有高人给了这样的回复:
    dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index); 
    -------------- 
    这样只是删除的view,即内存数据,这样的修改   没有更新到数据库 用的是dataAdapter   就用update更新下数据库就可以了 --------------------------------------------------- 
    请高人能写得详细些吗,是用dataAdapter.Update()?那么怎么写()中的呢?
    ----------------------------
    后面高人就没有下文了。实际上,我认为在创建datasource的时候,应该选择产生相应的update和delete语句。在拖进datagridview以及bindingnavigator的时候,绑定好,在它们的相应的删除事件中指定好delete的sql就可以了。
    我正在试验。
      

  11.   

    DataTable dt = dset.Tables[0];                dt.Rows[dataGridView1.CurrentCell.RowIndex].Delete();