2

我在 C# WinForm 上有一个 dataGridView、textBoxFirstName、buttonSelect 和 buttonUpdate。我的问题末尾有代码。

当我单击 buttonSelect 按钮时,选择结果会毫无问题地出现在 dataGridView 和 textBoxFirstName 中。当我从 dataGridView 中选择不同的记录时,textBoxFirstName 也会自动更新。

当我从 dataGridView 更改“FirstName”字段并单击 buttonUpdate 时,FirstName 字段将毫无问题地保存到数据库中。

但是,当我从 textBoxFirstName 更改“FirstName”时,单击 buttonUpdate 时数据不会保存到数据库中。

当从 textBoxFirstName 进行更改并单击 buttonUpdate 时,如何将 FirstName 字段保存到数据库中?

谢谢你。

public partial class Form1 : Form
{

    private const string connectionString = "Server=localhost;Database=AdventureWorks2008R2;Trusted_Connection=True";
    private SqlConnection con;
    private SqlDataAdapter dataAdapter;

    public Form1()
    {
        InitializeComponent();
        con = new SqlConnection(connectionString);
    }

    private void FillGrid(string sqlCommand)
    {
        dataAdapter = new SqlDataAdapter(sqlCommand, con);
        SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

        DataTable dataTable = new DataTable();
        dataAdapter.Fill(dataTable);

        dataGridView.DataSource = dataTable;
        textBoxFirstName.DataBindings.Clear();
        textBoxFirstName.DataBindings.Add("Text", dataTable, "FirstName");
    }

    private void buttonSelect_Click(object sender, EventArgs e)
    {
        FillGrid("SELECT TOP 100 * FROM Person.Person");
    }

    private void buttonUpdate_Click(object sender, EventArgs e)
    {
        dataAdapter.Update((DataTable)dataGridView.DataSource);
    }
}
4

2 回答 2

0

那是因为buttonUpdate_Click您在内部dataAdapter使用网格的数据源进行更新。因此,网格中的任何内容都会存储在数据库中,但是,文本框中的文本不会。您还需要使用textBoxFirstName的数据源更新数据适配器。希望能帮助到你。

于 2013-02-21T06:56:02.337 回答
0

正如有人告诉您,当您单击按钮更新时,您没有更新文本框的数据,您只是在更新 gridviews 数据..现在试试这个。

private void buttonUpdate_Click(object sender, EventArgs e)
{
    dataAdapter.Update((DataTable)dataGridView.DataSource);
    textBoxFirstName.DataBindings.Add("Text", dataTable, "FirstName");
}
于 2013-02-21T06:59:25.623 回答