0

私のWindowsアプリケーションには、ジョブコードコンボボックスがあり、ユーザーがコンボボックスからジョブコードを選択すると、データベースから対応するデータが取得され、コンボボックスの下のデータグリッドビューに表示されます。すべて問題なく、選択したジョブコードに対応するデータをロードできます。

このコードを使用しました

public void loadcompljobcodecombobox()
{
    completedcobcodeadapterTableAdapter cmpltjbcd = new completedcobcodeadapterTableAdapter();
    cmpltjbcd.Connection = new OleDbConnection(Program.ConnStr);

    DataTable dt= cmpltjbcd.GetData(int.Parse(cmbcutcode.SelectedValue.ToString()));

    if (dt.Rows.Count > 0)
    {
       cmbjobcode.ValueMember = "jobpk";
       cmbjobcode.DisplayMember = "jobcode";

       txtcompanyname.Text = "companyname";
       cmbjobcode.DataSource = dt;
    }
    else 
    {
       MessageBox.Show("NO JobCode to be invoiced");
    }
}

private void cmbjobcode_SelectedValueChanged(object sender, EventArgs e)
{
    tbltoinvoicedtableTableAdapter tbltoinvce = new tbltoinvoicedtableTableAdapter();
    tbltoinvce.Connection = new OleDbConnection(Program.ConnStr);

    if (cmbjobcode.SelectedValue != null)
    {
       DataTable dt = tbltoinvce.GetDataBy(int.Parse(cmbjobcode.SelectedValue.ToString()));
       dataGridView1.DataSource = dt;
    }
}

私の要件は、ユーザーが請求のために一度に複数のジョブコードの詳細を選択できる必要があることです。つまり、ジョブコードから1つの値を選択した場合、対応するデータをdatagridviewに追加し、別のジョブコードを選択すると、対応するデータを次の行として追加する必要があります。 Datagridviewで。

私は非常に試してみましたが、誰もアイデアや例を提案する方法を見つけることができませんでした

4

1 に答える 1

1

私があなたを正しく理解していれば、私はこのようなことを試してみます. これはテストされていませんが、アイデアです。

フォーム レベル:

private BindingList<DataRow> jobList;

次に、現在のコードに追加するには...

private void cmbjobcode_SelectedValueChanged(object sender, EventArgs e)
   {
       tbltoinvoicedtableTableAdapter tbltoinvce = new tbltoinvoicedtableTableAdapter();
       tbltoinvce.Connection = new OleDbConnection(Program.ConnStr);
       if (cmbjobcode.SelectedValue != null)
       {
           DataRow job = tbltoinvce.GetDataBy(int.Parse(cmbjobcode.SelectedValue.ToString())).Rows[0];
           if (jobList == null)
           {
               jobList = new BindingList<DataRow>();
               jobList.Add(job);
               dataGridView1.DataSource = jobList;
           }
           else
           {
               if (!jobList.Contains(job));
                   jobList.Add(job);               
           }
       }
   }

**編集:これは、質問で「行」を追加する方法を尋ねられたため、ジョブデータに1行のデータしか含まれていないことを前提としています。

于 2012-05-07T21:12:36.167 に答える