0

私は C# で顧客アプリケーションを書き始めたばかりで、そのほとんどに Visual Studio デザイン モードを使用しています。私は昨日 C# を学び始めたばかりなので、ばかげた間違いをしている場合は、そう言ってください。

私がこれまでに持っているもの

  • データベース;
  • Customer テーブルと Agent テーブルにリンクする DataSet。
  • DataSet にバインドする BindingSource。
  • BindingSource の Customer テーブルにバインドする CustomerBindingSource。
  • BindingSource の Agent テーブルにバインドする AgentBindingSource。
  • CustomerBindingSource にバインドする DataGridView。その AgentID 列は、AgentBindingSource にバインドするコンボボックスです。

これまでのところ、これは正常に機能しています。ただし、いくつかの問題があり、そのうちの1つは次のコードにあります...

コード

void grdCustomers_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    DataGridViewRow gvr = grdCustomers.Rows[e.RowIndex];
    String currID = gvr.Cells[0].Value.ToString();
    if (currID.Equals(""))
    {
        gvr.Cells[0].Value = "{id}";
    }
}
void button1_Click(object sender, EventArgs e) //Save button for when the user has finished editing.
{
    foreach (DataGridViewRow gvr in grdCustomers.Rows)
    {
        String currID = gvr.Cells[0].Value.ToString();
        if (currID.Equals("{id}"))
        {
            String g = Guid.NewGuid().ToString();
            gvr.Cells[0].Value = g;
        }
    }
    customerTableAdapter.Update(customerAppDS21.Customer);
}

問題点

  1. プログラムを実行しようとすると、4行目で問題が発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていないと言っています。これは が原因だと思いますがgvr.Cells[0]、理由はわかりません。私の考えでは、行のセットアップが完了したときにこれが呼び出された場合(すべてのセルの追加を含む)、それは理にかなっています。

  2. DataGridView を取得してデータをデータベースにバインドできません。ユーザーが任意の値を編集できるようにしたいのですが、ユーザーが行を追加すると、[保存] ボタン ( button1) をクリックするまで ID が計算されません。

誰かがこれらの問題のいずれかで私を助けてくれれば幸いです。

よろしく、

リチャード

4

3 に答える 3

1

null の「値」です。セルのデフォルト値は常に null です。これは、入力される前にそれを読んだり、その列に値がないことを意味します。アクセスする前に、null かどうかを確認してください。null の場合、そのセルには値がありません。

于 2010-10-28T13:53:11.733 に答える
0

cellFormatted イベント ハンドラーでセルの内容を変更する方が簡単であるという私の経験です。

于 2010-10-28T14:01:33.737 に答える