设计了一个页面,有datagridview。
点击其中一行,该行数据反映在窗口中的textbox中。
上面说的都实现了!
但是如何删除?
看了书上都说要加上“where”什么什么的语句匹配条件删除行。
但我设计的数据表中允许有重复的数据的!比如同一税种,金额也一样。一删就都删除了!
只有自动给编号的“ID”字段不一样。
请问如何处理?
点击其中一行,该行数据反映在窗口中的textbox中。
上面说的都实现了!
但是如何删除?
看了书上都说要加上“where”什么什么的语句匹配条件删除行。
但我设计的数据表中允许有重复的数据的!比如同一税种,金额也一样。一删就都删除了!
只有自动给编号的“ID”字段不一样。
请问如何处理?
[ID]就是那个自动编号的字段,后面是要删除行的[ID]字段值。
你绑定DataGridView的时候把ID列隐藏掉,这样比较美观一点
我想是在datagridview中点击选择某一行。
不知道ID值,要从表中取得1
不知道自动编号的数据类型是什么,我用where id = Convert.ToInt32( dgvmain[0, dgvmain.CurrentCell.RowIndex].Value)
取值,总是说数据类型不对!
能否说的详细一点?对你说的BindingSource为桥不懂~!
我就是按书上说的用dataset当做数据源
dataset.Tables["绑定数据时的表名"].Rows[dgvInfos.SelectedRows[0].Index].Delete();
其实就是取选中行的id值,按id进行删改
系统提示:错误 1 “int”并不包含“parse”的定义 D:\gkshjd\gkshjd\gkshjd\frm_pzluru.cs 272 76 gkshjd
我把全部代码贴出来,大伙帮我看看啊!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;namespace gkshjd
{
public partial class frm_pzluru : Form
{ gkshjd.BaseClass.BaseOperate boperate = new gkshjd.BaseClass.BaseOperate();
gkshjd.BaseClass.OperateAndValidate opAndvalidate = new gkshjd.BaseClass.OperateAndValidate();
protected string myolestr = "select id as 序号,kemucode as 科目代码,kemuname as 科目名称,jiefang as 借方金额,daifang as 贷方金额,jdren as 监督人 from tb_main";
protected string mystrtb = "tb_main";
protected int ismodi;
public frm_pzluru()
{
InitializeComponent();
} private void frm_pzluru_Load(object sender, EventArgs e)
{
txt_kmcode.Text = "";
txt_kmname.Text = "";
txt_jf.Text = "";
txt_df.Text = "";
txt_kmcode.Focus();
DataSet myds = boperate.getds(myolestr, mystrtb);
dgvmain.DataSource = myds.Tables[0];
this.dgvmain.Columns[0].FillWeight = 5;
this.dgvmain.Columns[1].FillWeight = 15;
this.dgvmain.Columns[2].FillWeight = 30;
this.dgvmain.Columns[3].FillWeight = 20;
this.dgvmain.Columns[4].FillWeight = 20;
this.dgvmain.Columns[5].FillWeight = 10;
} private void dgvmain_CellFormatting_1(object sender,DataGridViewCellFormattingEventArgs e)
{
DataGridViewCellStyle cs1 = new DataGridViewCellStyle();
cs1.Format = "N2";
cs1.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dgvmain.Columns[4].DefaultCellStyle = cs1;
this.dgvmain.Columns[3].DefaultCellStyle = cs1; }
private void dgvmain_CellClick(object sender, DataGridViewCellEventArgs e)
{
txt_kmcode.Text = Convert.ToString(dgvmain[1, dgvmain.CurrentCell.RowIndex].Value).Trim();
txt_kmname.Text = Convert.ToString(dgvmain[2, dgvmain.CurrentCell.RowIndex].Value).Trim();
txt_jf.Text = Convert.ToString(dgvmain[3, dgvmain.CurrentCell.RowIndex].Value).Trim();
txt_df.Text = Convert.ToString(dgvmain[4, dgvmain.CurrentCell.RowIndex].Value).Trim();
btnmodi.Enabled = true;
btndele.Enabled = true;
btntop.Enabled = true;
btnlast.Enabled = true;
btnnext.Enabled = true;
btnend.Enabled = true;
btnsave.Enabled = false;
}
private void btndele_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show("确定要删除该条信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
// myds.Tables[0].Rows[dgvmain.SelectedRows[0].Index].Delete();
boperate.getcom("delete from tb_main where id='" + Convert.ToString(dgvmain[0, dgvmain.CurrentCell.RowIndex].Value) + "'");
frm_pzluru_Load(sender, e);
MessageBox.Show("删除数据成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
// Convert.ToInt32(
}
}
catch (Exception ex) {
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
} }
}
MyBindSource.DataSource = MyDtTable;//或是DataView
移除当前行:
bsSource.RemoveAt(MyBindSource.Position)
where id=dataGridView1[0,dataGridView1.CurrentCell.RowIndex].Value.ToString();楼主可以试一下
从你的某行肯定能取到IDDelete From [表名] Where [ID] = 你所选中行的ID这样去执行就行了
试过了上述where id=。。多条语句,取出来的值都是字符串,提示数据类型不匹配!
比如我选择的是第2号记录,
允许程序的结果都是"id='2'",提示不匹配!!!!
string idsql = string.Format("delete from tb_main where id={0}", ID);
boperate.getcom(idsql);
我觉得你应该在CellClick去取ID
int id = int.Parse(this.dgvmain.Rows[e.RowIndex].Cells["id"].Value.ToString());