0

在我的 Windows 应用程序中,我有一个工作代码组合框,当用户从组合框中选择一个工作代码时,它将从数据库中获取相应的数据,并将其显示在组合框下方的 datagridview 中。一切都很好,我能够加载与所选工作代码相对应的数据。

我使用了这个代码

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;
    }
}

现在我的要求是用户必须能够一次选择多个作业代码详细信息进行开票,即如果他从作业代码中选择一个值,则应将相应数据添加到 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);               
           }
       }
   }

**编辑:这是假设您的工作数据仅包含一行数据,因为您的问题询问如何添加“一行”。

于 2012-05-07T21:12:36.167 回答