在CE上面的datagrid显示数据库(SQLITE)内容后 是无法直接进行编辑的。因此要做一个textbox来写入cell,照抄了CSDN上面的一个博客http://blog.csdn.net/aawolf/archive/2003/10/29/7537.aspx
的代码后,发现一个问题,就是无法更新到数据库。。不知道哪儿出了问题。请高手指导下:
首先连接数据库:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyCode == Keys.Enter)
{
try
{
string datasource = @"Application\DataBase\DataBaseOut.db";
SQLiteConnection conn = new SQLiteConnection();
conn.ConnectionString = "Data Source=" + datasource + ";Pooling=true;FailIfMissing=false";
conn.Open();
string sql = "SELECT * FROM "+TaskStartForm.taskname+" WHERE Col" + colnumber.Text + "=" + "'" + inb + "'";
SQLiteCommand cmd = new SQLiteCommand(sql, conn);
sda = new SQLiteDataAdapter(cmd);
dst = new DataSet();
sda.Fill(dst,TaskStartForm.taskname);
//conn.Close();
dataGrid1.DataSource = dst.Tables[0];
dataGrid1.Enabled = true;
}
catch
{
MessageBox.Show("datagrid显示出错");
}下面就是照抄 CSDN上面的代码,做个txtbox,用于当点击一个cell的时候 显示出来 并且输入内容后,保存到当前的CELLprivate DataGridCell editCell;
private bool inEditMode = false;
private bool inUpdateMode = false; private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)
{
if (!inUpdateMode)
{
if (inEditMode && !dataGrid1.CurrentCell.Equals(editCell))
{ // Update edited cell
inUpdateMode = true;
dataGrid1.Visible = false;
DataGridCell currentCell = dataGrid1.CurrentCell;
dataGrid1[editCell.RowNumber, editCell.ColumnNumber] = txtEdit.Text;
dataGrid1.CurrentCell = currentCell;
dataGrid1.Visible = true;
inUpdateMode = false;
txtEdit.Visible = false;
inEditMode = false;
}
// Enter edit mode
editCell = dataGrid1.CurrentCell;
txtEdit.Text = (string)dataGrid1[editCell.RowNumber, editCell.ColumnNumber];
Rectangle cellPos = dataGrid1.GetCellBounds(editCell.RowNumber, editCell.ColumnNumber);
txtEdit.Left = cellPos.Left - 1;
txtEdit.Top = cellPos.Top + dataGrid1.Top - 1;
txtEdit.Width = cellPos.Width + 2;
txtEdit.Height = cellPos.Height + 2;
txtEdit.Visible = true;
inEditMode = true;
}
} private void dataGrid1_MouseUp(object sender, MouseEventArgs e)
{
//sda.Update(dst, TaskStartForm.taskname);
DataGrid.HitTestInfo hitTest = dataGrid1.HitTest(e.X, e.Y);
if (hitTest.Type == DataGrid.HitTestType.ColumnHeader)
{ // Exit edit mode
txtEdit.Visible = false;
inEditMode = false;
// Sort tapped column
DataTable dataTable = (DataTable)dataGrid1.DataSource;
DataView dataView = dataTable.DefaultView;
string columnName = dataTable.Columns[hitTest.Column].ColumnName;
if (dataView.Sort == columnName)
{
dataView.Sort = columnName + " DESC";
}
else
{
dataView.Sort = columnName;
}
}
}最后我做了个button用来保存更改后的数据private void button1_Click(object sender, EventArgs e)
{
sda.Update(dst,TaskStartForm.taskname); }这个保存按钮么得一点用呀,不知道哪儿写错了,还是根本就是都没有写保存,在线等望高手指点一下感谢,感谢~~~~
的代码后,发现一个问题,就是无法更新到数据库。。不知道哪儿出了问题。请高手指导下:
首先连接数据库:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyCode == Keys.Enter)
{
try
{
string datasource = @"Application\DataBase\DataBaseOut.db";
SQLiteConnection conn = new SQLiteConnection();
conn.ConnectionString = "Data Source=" + datasource + ";Pooling=true;FailIfMissing=false";
conn.Open();
string sql = "SELECT * FROM "+TaskStartForm.taskname+" WHERE Col" + colnumber.Text + "=" + "'" + inb + "'";
SQLiteCommand cmd = new SQLiteCommand(sql, conn);
sda = new SQLiteDataAdapter(cmd);
dst = new DataSet();
sda.Fill(dst,TaskStartForm.taskname);
//conn.Close();
dataGrid1.DataSource = dst.Tables[0];
dataGrid1.Enabled = true;
}
catch
{
MessageBox.Show("datagrid显示出错");
}下面就是照抄 CSDN上面的代码,做个txtbox,用于当点击一个cell的时候 显示出来 并且输入内容后,保存到当前的CELLprivate DataGridCell editCell;
private bool inEditMode = false;
private bool inUpdateMode = false; private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)
{
if (!inUpdateMode)
{
if (inEditMode && !dataGrid1.CurrentCell.Equals(editCell))
{ // Update edited cell
inUpdateMode = true;
dataGrid1.Visible = false;
DataGridCell currentCell = dataGrid1.CurrentCell;
dataGrid1[editCell.RowNumber, editCell.ColumnNumber] = txtEdit.Text;
dataGrid1.CurrentCell = currentCell;
dataGrid1.Visible = true;
inUpdateMode = false;
txtEdit.Visible = false;
inEditMode = false;
}
// Enter edit mode
editCell = dataGrid1.CurrentCell;
txtEdit.Text = (string)dataGrid1[editCell.RowNumber, editCell.ColumnNumber];
Rectangle cellPos = dataGrid1.GetCellBounds(editCell.RowNumber, editCell.ColumnNumber);
txtEdit.Left = cellPos.Left - 1;
txtEdit.Top = cellPos.Top + dataGrid1.Top - 1;
txtEdit.Width = cellPos.Width + 2;
txtEdit.Height = cellPos.Height + 2;
txtEdit.Visible = true;
inEditMode = true;
}
} private void dataGrid1_MouseUp(object sender, MouseEventArgs e)
{
//sda.Update(dst, TaskStartForm.taskname);
DataGrid.HitTestInfo hitTest = dataGrid1.HitTest(e.X, e.Y);
if (hitTest.Type == DataGrid.HitTestType.ColumnHeader)
{ // Exit edit mode
txtEdit.Visible = false;
inEditMode = false;
// Sort tapped column
DataTable dataTable = (DataTable)dataGrid1.DataSource;
DataView dataView = dataTable.DefaultView;
string columnName = dataTable.Columns[hitTest.Column].ColumnName;
if (dataView.Sort == columnName)
{
dataView.Sort = columnName + " DESC";
}
else
{
dataView.Sort = columnName;
}
}
}最后我做了个button用来保存更改后的数据private void button1_Click(object sender, EventArgs e)
{
sda.Update(dst,TaskStartForm.taskname); }这个保存按钮么得一点用呀,不知道哪儿写错了,还是根本就是都没有写保存,在线等望高手指点一下感谢,感谢~~~~
解决方案 »
- Forms.Owner
- C#数据的更新,修改。寻求高手帮忙!!!谢谢。速度。
- 哪位大哥大姐帮帮忙,问题简单,不要见怪.
- 找错误
- 如何让EXCEL中的值发生变化时就触指定的网页或程序呢?请各位指教。
- Server.Transfer的问题,如何在Transfer过程中保持url不变.
- 用什么控件制作大小一样的窗口用于做新建项目向导
- 请问谁有C#的教学网站?我初学者,对什么便利之类都不知道
- 帮忙帮忙:datagrid删除模板列事件,如何获取操作行的其它列值呢?
- WPF里面如何通过点击按钮,把另外一个窗体的BUTTON,显示到主窗体
- 有批量数据给反射出来的实体类赋值的优化问题
- C#中的byte数组问题
跟踪值 看看哪里丢失了值或者报错了