点击sql数据库dataview表中cell,当点击次数大于表中行的数量时出错

.Net技术 码拜 8年前 (2016-02-26) 942次浏览
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace 智能水表管理平台
{
public partial class Frm_CSSZ : Form
{
public Frm_CSSZ()
{
InitializeComponent();
}

SqlConnection conn_YHLX,conn_BLX,conn_JGXX;
DataSet ds_YHLX, ds_BLX, ds_JGXX;
SqlDataAdapter sda_YHLX, sda_BLX, sda_JGXX;

private void Frm_CSSZ_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}

private void Frm_CSSZ_Load(object sender, EventArgs e)
{
////  用户信息数据库连接
conn_YHLX = new SqlConnection(“server=tt;database=mmss;uid=sa;pwd=senter”);
SqlCommand cmd_YHLX = new SqlCommand(“select * from TB_YHLX”, conn_YHLX);
sda_YHLX = new SqlDataAdapter();
sda_YHLX.SelectCommand = cmd_YHLX;
ds_YHLX = new DataSet();
sda_YHLX.Fill(ds_YHLX, “cs”);
dataGridView1.DataSource = ds_YHLX.Tables[0];
////  表类型数据库连接
conn_BLX = new SqlConnection(“server=tt;database=mmss;uid=sa;pwd=senter”);
SqlCommand cmd_BLX = new SqlCommand(“select * from TB_BLX”, conn_BLX);
sda_BLX = new SqlDataAdapter();
sda_BLX.SelectCommand = cmd_BLX;
ds_BLX = new DataSet();
sda_BLX.Fill(ds_BLX, “cs”);
dataGridView2.DataSource = ds_BLX.Tables[0];
////  价格信息数据库连接
conn_JGXX = new SqlConnection(“server=tt;database=mmss;uid=sa;pwd=senter”);
SqlCommand cmd_JGXX = new SqlCommand(“select * from TB_JGXX”, conn_JGXX);
sda_JGXX = new SqlDataAdapter();
sda_JGXX.SelectCommand = cmd_JGXX;
ds_JGXX = new DataSet();
sda_JGXX.Fill(ds_JGXX, “cs”);
dataGridView3.DataSource = ds_JGXX.Tables[0];
}
private void Btn_XG_Click(object sender, EventArgs e)//用户类型修改按钮点击事件
{
////用户类型
DataTable dt_YHLX = ds_YHLX.Tables[“cs”];
sda_YHLX.FillSchema(dt_YHLX, SchemaType.Mapped);
DataRow dr_YHLX = dt_YHLX.Rows.Find(Txt_YHLX.Text);
dr_YHLX[“备注”] = Txt_yhlx_BZ.Text.Trim();
SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(sda_YHLX);
sda_YHLX.Update(dt_YHLX);
}
private void Btn_blx_XG_Click(object sender, EventArgs e)//表类型修改按钮点击事件
{
DataTable dt_BLX = ds_BLX.Tables[“cs”];
sda_BLX.FillSchema(dt_BLX, SchemaType.Mapped);
DataRow dr_BLX = dt_BLX.Rows.Find(Txt_BLX.Text);//
dr_BLX[“表类型”] = Txt_BLX.Text.Trim();
dr_BLX[“表号”] = Txt_blx_BH.Text.Trim();//
dr_BLX[“备注”] = Txt_blx_BZ.Text.Trim();
SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(sda_BLX);
sda_BLX.Update(dt_BLX);
}
private void Btn_jgxx_XG_Click(object sender, EventArgs e)//价格信息修改按钮单击事件
{
DataTable dt_JGXX = ds_JGXX.Tables[“cs”];
sda_JGXX.FillSchema(dt_JGXX, SchemaType.Mapped);
DataRow dr_JGXX = dt_JGXX.Rows.Find(Txt_JGMC.Text);//
dr_JGXX[“基本价格”] = Txt_JBJG.Text.Trim();//
dr_JGXX[“其他价格”] = Txt_QTJG.Text.Trim();
dr_JGXX[“备注”] = Txt_jgxx_BZ.Text.Trim();
SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(sda_JGXX);
sda_JGXX.Update(dt_JGXX);
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)//用户类型dataview1显示
{
try
{
Txt_YHLX.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
// Txt_BZ.Text = dataGridView1.SelectedCells[1].Value.ToString();
Txt_yhlx_BZ.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
}
catch
{ }

}
private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)//表类型dataveiw2显示
{
try
{
Txt_BLX.Text = dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString();

Txt_blx_BZ.Text = dataGridView2.Rows[e.RowIndex].Cells[2].Value.ToString();
Txt_blx_BH.Text = dataGridView2.Rows[e.RowIndex].Cells[1].Value.ToString();
}
catch
{ }
}
private void dataGridView3_CellContentClick(object sender, DataGridViewCellEventArgs e)//价格信息dataveiw3显示
{
try
{
Txt_JGMC.Text = dataGridView3.Rows[e.RowIndex].Cells[0].Value.ToString();
Txt_JBJG.Text = dataGridView3.Rows[e.RowIndex].Cells[1].Value.ToString();
Txt_QTJG.Text = dataGridView3.Rows[e.RowIndex].Cells[2].Value.ToString();
Txt_jgxx_BZ.Text = dataGridView3.Rows[e.RowIndex].Cells[3].Value.ToString();
}
catch
{ }
}
}
}

//其中一个form包含一个tabcontrol控件(内含三个tabpage页,这三个tabpage分别包含一个按钮、一个dataview控件,几个textbox),分别为“用户类型”“表类型”“价格信息”,本人先写的”用户类型“代码,包括连接数据库,在dataview中显示,点击单元格后在textbox中显示该行的cell中的数据,假如点击“修改“按钮,可以通过修改textbox中的值来修改数据库中的值。之后本人直接黏贴复制”用户类型”的代码,作为”表类型“”价格信息“的代码(当然修改了连接表、dataview,按钮等控件的名称)。使得这三个tabpage可以显示这三个表中的数据
//问题来了,运行程序后,本人反复点击、修改”用户类型“中的cell,textbox都可以正常显示cell中的值,并且修改textbox中的值也可以改变表中的值。但是对于另外另个表就不行了,例如”表类型“中共有3行数据,本人依次点击三次后,之后再点击任何cell,textbox中的数据都是显示本人第四次点击时的数据,且不管此时本人选中(点击)的是哪个cell,假如修改textbox的值,点击”修改“按钮,只能改变本人最后一次修改成功的单元格中的值。(正常应该是本人点击那个cell,就是修改那个cell的值)。”用户信息“tabpage也是这样。点击sql数据库dataview表中cell,当点击次数大于表中行的数量时出错这三个表同样的代码。为什么用户类型的没有出现问题,,,下面这两个就不行了?
如图片所示,本人点击的是“扶持电价”-“基本价格”的单元格,下面的基本价格txtbox中本人输入的是3,点击修改后,正常应该是“扶持电价”-基本价格变为3,但结果确是最下一行“商用价格”-基本价格-成了3。
而且本人点击任何单元格,下面总是显示最下面商用水价的数值。

解决方案

25

datagridview点击默认选中的是单元格,不会换行,要换行:
方法1:点击行的“指示列”
或方法2:
this.dataTables.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;

15

建议使用楼上的方法,默认点击是选中行,而不是选中单元格

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明点击sql数据库dataview表中cell,当点击次数大于表中行的数量时出错
喜欢 (0)
[1034331897@qq.com]
分享 (0)