在C#

时间:2018-07-19 02:53:15

标签: c# datagridview visual-studio-2017

我是C#的初学者。我有一个名为ClientTransaction和ServiceDetails的Windows窗体。我制作了一个DataGridView,它连续有一个视图按钮,当您单击它时,它将生成servicedetail表单。我希望将datagridview中的“客户交易”中的值传递到服务详细信息中。

客户交易表格:

Client Transaction Form

点击视图后,将进入“服务详细信息表”

仅对服务详细信息表格进行模拟

Service Details Form

我尝试使用此代码

private void ClientTransaction_Load(object sender, EventArgs e)
    {

        DataGridViewButtonColumn viewBtn = new DataGridViewButtonColumn();
        viewBtn.HeaderText = "Action";
        viewBtn.Text = "View";
        viewBtn.Name = "btnView";
        viewBtn.UseColumnTextForButtonValue = true;
        reservedGrid.Columns.Add(viewBtn);


    }
private void reservedGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        var senderGrid = (DataGridView)sender;

        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
            e.RowIndex >= 0)
        {
            //TODO - Button Clicked - Execute Code Here 
            ServiceDetail viiew = new ServiceDetail();
            viiew.Show();
            }
    }

它可以在另一种形式上继续工作,但是我仍然发现从datagridview的客户事务中每一行的值中以另一种形式传递数据的方式将通过服务详细信息形式传递,如屏幕截图所示。以上。谢谢!

客户交易表

id INT AUTO_INCREMENT主键, client_id INT NOT NULL, status VARCHAR(20)NOT NULL, total_amt双(7,2), trans_date时间戳记非空默认CURRENT_TIMESTAMP在更新CURRENT_TIMESTAMP上

服务详细信息表

id INT AUTO_INCREMENT主键, client_transaction_id INT NOT NULL, barber_id INT NOT NULL, service_id INT NOT NULL, added_on时间戳记非空默认CURRENT_TIMESTAMP在更新CURRENT_TIMESTAMP上

2 个答案:

答案 0 :(得分:0)

方法1:

服务详细信息表

class ServiceDetail
{

 public ServiceDetail()
 {
  InitializeComponent();
 }

 public ServiceDetail(int serviceDetailId)
 {
      //here you have selected id now you can get details from db..
 } 
}

客户交易表格

   private void reservedGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
   {
            var senderGrid = (DataGridView)sender;

            if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
                e.RowIndex >= 0)
            {
int selectedId=Convert.ToInt(senderGrid.Rows[e.RowIndex].Cells["Service_Detail_ID"].Value));
                //TODO - Button Clicked - Execute Code Here 
                ServiceDetail viiew = new ServiceDetail(selectedId);
                //viiew.ref_branch1 = this;
                viiew.Show();
             }
   }

方法2:

服务详细信息表

class ServiceDetail
{
 public int serviceDetailId=0;

 public ServiceDetail()
 {
  InitializeComponent();
 }

 public ServiceDetail()
 { 
      //here you have selected id now you can get details from db..
 } 
}

客户交易表格

   private void reservedGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
   {
            var senderGrid = (DataGridView)sender;

            if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
                e.RowIndex >= 0)
            {
int selectedServiceDetailId=Convert.ToInt(senderGrid.Rows[e.RowIndex].Cells["Service_Detail_ID"].Value));
                //TODO - Button Clicked - Execute Code Here 
                ServiceDetail viiew = new ServiceDetail();
                viiew.SelectedId=selectedServiceDetailId;
                viiew.Show();
            }
    }

答案 1 :(得分:0)

如果在服务详细信息表单中没有构造函数,则在单击viewBtn时通过构造函数将信息传递到服务详细信息表单,然后在服务详细信息表单中构造信息的构造函数。

ServiceDetail viiew = new ServiceDetail(.....);//ID,client,total,etc
viiew.Show();

当您添加服务详细信息表单时,在此添加参数化的构造函数

 class ServiceDetail
 {
    public ServiceDetail()
    {
      InitializeComponent();
    }
    public ServiceDetail(..................)//ID,client,total,etc
    {
      ............................
      ............................
    }
  }