收录日期:2020/12/06 01:41:31 时间:2016/07/15 06:29:00 标签:C#
比如 我现在有一个 dataGridView 控件 和一个  textbox  控件  当我 通过dataGridView把数据库中的 数据调出来的时候,我点击dataGridView 中的一个单元格(一条数据),textbox 控件中就会显示这条数据 。问:当我 修改textbox 中的数据的时候 如何才能让 dataGridView 和数据库中的 数据 都修改!!!
焦点离开TextBox以后,修改自然会反应到DataGridView中。
至于更新到数据库,需要更多的代码。
                string strChange = "SQL语句";
                SqlConnection conChange = new SQLConnection();
                conChange.Open();
                SqlCommand cmd = new SqlCommand(strChange, conChange);
                cmd.ExecuteNonQuery();
                conChange.Close();
                MessageBox.Show("用户更改成功!");
                再重新连接数据库,你可以提前把数据库连接写成一个函数
用保存到数据库 直接更新数据库 在调用的时候不就更新了吗?
修改DataSource然后保存到数据库的意思吗?
页面:<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
                        OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" Height="219px" Width="774px" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px">
                        <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
                        <Columns>
                            <asp:BoundField DataField="lid" HeaderText="频道ID" ReadOnly="True" />
                            <asp:BoundField DataField="linkName" HeaderText="链接文字" />
                            <asp:BoundField DataField="linkSrc" HeaderText="链接地址" />
                            <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
                            <asp:CommandField HeaderText="删除" ShowDeleteButton="True" DeleteText="&lt;div id=&quot;de&quot; onclick=&quot;JavaScript:return confirm('确定删除吗?')&quot;&gt;删除&lt;/div&gt; " />
                        </Columns>
                        <RowStyle ForeColor="#330099" BackColor="White" />
                        <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
                        <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
                        <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
                    </asp:GridView>


.CS页面:


//更新
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        
        string sqlstr = "update ShangHai_link set linkName='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',linkSrc='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "' where lid='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
        int i = exec(CommandType.Text, sqlstr, null);
        if (i > 0)
        {
            GridView1.EditIndex = -1;
            bind();
        }
        else {
            Page.RegisterStartupScript("","<script>alert('编辑失败!')</script>");
        }
    }
你看看是不是要的这种效果。。。
我 那 个不是网页的 
获取焦点离开TextBox的事件,然后判断TextBox的内容是否变动,如果有变动再修改dataGridView和数据库
引用 8 楼 aierda 的回复:
获取焦点离开TextBox的事件,然后判断TextBox的内容是否变动,如果有变动再修改dataGridView和数据库

如果TextBox的内容有异动,将TextBox的值更新到数据库中,然后重新绑定dataGridView就可以了啊
重新绑定一次省事``
如果已经绑定到TextBox,只要焦点离开TextBox,更改自然会应用到数据源的。
需要更新到数据库时,使用DataTable.GetChanges就可以获得更改的数据行。

绑定的效果,不是凭空可以想象的。
UP~!
dataGridView 控件 和  textbox  控件同时绑定数据源,
选定dataGridView  textbox会跟记录号的不同,值也跟着变化。

修改 textbox值。dataGridView也会被修改。但不会修改数据库
如果要修改数据库,需
BindingSource.EndEdit();
TableAdapter.Update(DataSet);
其实可以做个按钮,修改完了点击按钮,这个比较好,
如果用失去焦点的话,比较麻烦,因为失去焦点的情况太多,但是用户也没有让他改
----------
代码 如下:

这是在 第一个窗体 写的

DataGridViewRow dgv = this.dgvQueryResult.SelectedRows[0];
            this.dgvQueryResult.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            frmUpdata fu = new frmUpdata(dgv);
                       fu.showdialog();



第2个窗体 



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace epicking
{
    public partial class frmUpdata : Form
    {
        DataGridViewRow dgv = new DataGridViewRow();
        public frmUpdata(DataGridViewRow dgvr)
        {
            InitializeComponent();
            this.dgv = dgvr;
        }

        private void frmUpdata_Load(object sender, EventArgs e)
        {
            //加载信息
          
          
            catch (Exception ex) {
                uoLib.Win.Debugger.Logger.Write(ex.Message);
            }
           
        }

 
    }
}

                string tilesName = dgv.Cells["瓦片名称"].Value.ToString();

在线等!请大家看看一个比较简单的问题!!! 关于HKEY_CURRENT_USER的保存位置 用sql语句见ACCESS表,每天的记录表怎么见啊,谢谢 2010 应届生 上海 工资(普通一本,二本) 军事FPS游戏《领土战争》首曝游戏视频 内销、外销、销售退回 C# 多个WorkBook之间的切换 2440,wince5.0播放wmv文件特别卡!!!! 一个八皇后的递归 不明白 内销、外销、内销退回、外销退回 怎么一句sql查询出树状结果 如何写语句把 c:\\document and setting下所有用户名的账户的临时文件夹里的内容都删除 怎么去掉所有文章中的所有html代码 为什么总是内存溢出,我改怎么解决呢? 获取getElementById 请教高手继承datechooser控件的问题,想增加一些显示内容。 为什么有些域用户,用的好好的,会突然掉域,要重新加一次 移动应用解决方案 积分 【已回复】 关于51与dac0832连接输出正弦波 非常郁闷 代碼,請幫忙看一下,在縣等呢 被封号了,求助一下 EVC 下的错误 求解决! sql语句问题 javascript 如何把 秒数如1265458 显示成 如2010-03-15 12:03:16 $this->saveField(\'hidden\', \'0\');是什么意思? apache 装完以后不能启动 mssql 获取数据问题,急... QT sqlite MISP版本嵌入式QT编译时出现mips-linux-gcc command not found