我是C#的初学者。我有一个名为ClientTransaction和ServiceDetails的Windows窗体。我制作了一个DataGridView,它连续有一个视图按钮,当您单击它时,它将生成servicedetail表单。我希望将datagridview中的“客户交易”中的值传递到服务详细信息中。
客户交易表格:
点击视图后,将进入“服务详细信息表”
仅对服务详细信息表格进行模拟
我尝试使用此代码
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上
答案 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
{
............................
............................
}
}