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

ボタン更新をクリックしても、テキストボックスのデータを更新していないと誰かが言ったように、グリッドビューデータのみを更新しています..今これを試してください。

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 に答える