点击DataGridView选中一行记录,文本框显示出行中的数据(这步我已实现)修改文本框中的数据,在点击修改按钮,DataGridView中被选中行的数据修改,数据库更新,修改后的数据依然被选中(这里不会写)
解决方案 »
- word打印问题请教
- 文件大小和空间的关系
- 从textbox中提取多个数字
- 急救,如何播放一个简单的WAV格式文件?
- 怎样才能在一个按钮事件执行完之前异步打开一个新窗口
- 想写一个简单的带附件功能的发送邮件的demo,哪种方法较好。using System.Web.Mail 为什么报错?
- 关于C#锁屏后程序运行
- 窗体图像如何输出到打印
- 醒目~~高手帮忙,不用tablestyle,怎么在 datagrid中,将某些行设定为readonly ?
- (double)0.3*10 == 3 好像在C#中恒成立!
- C# datetime 初始化 为null 如何处理
- C# SerialPort 串口 短信猫
{
DataGrid1.EditItemIndex=e.Item.ItemIndex; Get_Rows_Count();
Get_DataReader();
}
this.Validate();
private void 电子钱包dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
//获得datagridview单元格里的数据
try
{
日期dateTimePicker.Value = (DateTime)电子钱包dataGridView.Rows[e.RowIndex].Cells[1].Value;
钱包所剩钱TextBox.Text = 电子钱包dataGridView.Rows[e.RowIndex].Cells[2].Value.ToString();
钱柜所剩钱TextBox.Text = 电子钱包dataGridView.Rows[e.RowIndex].Cells[3].Value.ToString();
当天使用数TextBox.Text = 电子钱包dataGridView.Rows[e.RowIndex].Cells[4].Value.ToString();
使用方法TextBox.Text = 电子钱包dataGridView.Rows[e.RowIndex].Cells[5].Value.ToString();
}
catch
{
}
}//修改按钮点击事件
private void 修改button_Click(object sender, EventArgs e)
{
try
{
//获得你选中的行数
int a;
a = (int)电子钱包dataGridView.CurrentCell.RowIndex;
//加数据
cnn.Open();
dataset1.Tables["电子钱包"].Rows[a]["日期"] = 日期dateTimePicker.Value;
dataset1.Tables["电子钱包"].Rows[a]["钱包所剩钱"] = 钱包所剩钱TextBox.Text.Trim();
dataset1.Tables["电子钱包"].Rows[a]["钱柜所剩钱"] = 钱柜所剩钱TextBox.Text.Trim();
dataset1.Tables["电子钱包"].Rows[a]["当天使用数"] = 当天使用数TextBox.Text.Trim();
dataset1.Tables["电子钱包"].Rows[a]["使用方法"] = 使用方法TextBox.Text.Trim();
dataset1.AcceptChanges();
myAccept.Update(dataset1, "电子钱包");
cnn.Close();
MessageBox.Show("修改成功!");
}
catch
{
MessageBox.Show("已有相同的记录!");
}
}
没显示数据把grideview要重新绑定一下,
如果不是那就硬行搜索定位:dgv.CurrentCell 赋值选中你当前行的某个单元格
private void Form1_Load(object sender, EventArgs e)
{
//dataGridView1.AutoGenerateColumns = false;
conn = new OracleConnection(Source);
conn.Open();
//OracleDataAdapter oda = new OracleDataAdapter(); oda.UpdateCommand = new OracleCommand("update tb set serial_number = :sn ,next_station = :ns where rowid = :rid", conn);
oda.UpdateCommand.Parameters.Add("rid", OracleType.VarChar, 30).SourceColumn = "ROWID";
oda.UpdateCommand.Parameters.Add("sn", OracleType.VarChar, 30).SourceColumn = "SERIAL_NUMBER";
oda.UpdateCommand.Parameters.Add("ns", OracleType.VarChar, 40).SourceColumn = "NEXT_STATION"; oda.DeleteCommand = new OracleCommand("delete tb where rowid = :rid", conn);
oda.DeleteCommand.Parameters.Add("rid", OracleType.VarChar).SourceColumn = "ROWID"; oda.InsertCommand = new OracleCommand("insert into tb(serial_number,next_station) values(:sn , :ns )", conn);
oda.InsertCommand.Parameters.Add("sn", OracleType.VarChar).SourceColumn = "serial_number";
oda.InsertCommand.Parameters.Add("ns", OracleType.VarChar).SourceColumn = "next_station"; }
private void select_Click(object sender, EventArgs e)
{
try
{
ds.Clear();
string sql = "select rowid,serial_number,next_station from tb where serial_number like :sn";
oda.SelectCommand = new OracleCommand(sql, conn);
oda.SelectCommand.Parameters.Add("sn", OracleType.VarChar).Value = tb_SN.Text + "%";
oda.Fill(ds);
dataGridView1.DataSource = null;
dataGridView1.DataSource = ds.Tables[0];
} catch (Exception ex)
{
MessageBox.Show(ex.Message);
//string path = "";
//StreamWriter swriter = new StreamWriter();
}
} private void update_Click(object sender, EventArgs e)
{
this.Validate();
dataGridView1.EndEdit();
oda.Update(ds.Tables[0]); }
不用ExecquteNoquery(),还有其它方法吗?
/// 在行单击事件中写这么一句获取单击时选择的行号
private void dgvTemplate_CellClick(object sender, DataGridViewCellEventArgs e)
{
rowIndex = e.RowIndex;
}
修改按钮的单击事件下写
dgvTemplate.Rows[rowIndex].Selected = true; //刷新数据源后写这么一句话就ok