c#使用不同形式的变量
本文关键字:变量 | 更新日期: 2023-09-27 18:12:19
在form1 dataGridView1_CellDoubleClick
中,我有一个变量SelectedID
,它从datagridview1
获得值。我想在Form2DataSetFunction()
中的DataAccess
类sqlCommand
中使用该值。然后在Form2_Load
中使用Form2DataSetFunction()
填充datagridview。如果我在DataAccess类中创建一个方法GetSelectedID(string GetID)
,并将SelectedID
值从Form1传递给它,那么我如何在Form2DataSetFunction()
中使用该值。有人能帮帮我吗!!
格式1代码
namespace myApplication
{
public partial class Form1 : Form
{
private void dataGridView1_CellDoubleClick
(object sender, DataGridViewCellEventArgs e)
{
**string SelectedID** =
dataGridViewProcess.Rows[e.RowIndex].Cells[0].Value.ToString();
Form2 Form2Obj = new Form2();
Form2Obj.ShowDialog();
}
DataAccess类中的代码
namespace myApplication
{
class DataAccess
{
public DataSet Form2DataSetFunction()
{
Connection details......
SqlCommand mySqlCommand = new SqlCommand("SELECT * from myTable
where ID='"SelectedID"'", myobjConnection);
fill Dataset........
return Dataset;
}
格式2代码
namespace Form2
{
public partial class Form2 : Form
{
public Barcodes()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
DataAccess DataAccessObject = new DataAccess();
DataSet Form2DatasetObject =
DataAccessObject.Form2DataSetFunction();
dataGridViewForm2.DataSource =
Form2DatasetObject.Tables[0];
}
}
}
add
class DataAccess
{
private readonly string _tableId;
public DataAccess(stirng TableId)
{
_tableId = tableId;
}
// other stuff
}
use _tableId in Form2DataSetFunction function
Form2也应该在构造函数中有参数
public class Form2
{
private readonly DataAccess _dataAccess;
public Form2(DataAccess dataAccess)
{
_dataAccess = dataAccess;
}
// use given _dataAccess in FormLoad instead of creating one.
}
处理程序中的Form1
Form2 Form2Obj = new Form2(new DataAccess(dataGridViewProcess.Rows[e.RowIndex].Cells[0].Value.ToString()));
Form2Obj.ShowDialog();
这似乎是一个经典的"Master-Details"类型的操作。我已经发布了解决方案的SqlDataSource/GridView
控件包含在ASP。净(链接)。
本质上,它可以通过传递单元格值作为参数来解决:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){
if (e.Row.RowType == DataControlRowType.DataRow)
{
SqlDataSource s = (SqlDataSource)e.Row.FindControl("SqlDataSource2");
s.SelectParameters[0].DefaultValue = e.Row.Cells[0].Text;
}
}
或使用DataKeys
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow)
{
// find DataSource used for nested GridView (could be SqlDataSource)
AccessDataSource s = (AccessDataSource)e.Row.FindControl("dsMusic");
// assign parameter’s default value from the DataKeys in GridView1
s.SelectParameters[0].DefaultValue = Convert.ToString(((GridView)sender).DataKeys[e.Row.RowIndex].Values["Composer"]);
}
}
希望这能帮到你。认为,亚历克斯
p。下面是上面描述的嵌套GridView控件的一个示例:demo
我可以建议你两个选择一个是在你的构造函数Form2:
public Form2(String passID)
{
InitializeComponent();
}
但在此之前,form2中有一个用于SelectID的私有变量,比如
String SelectID
那么,你现在有:
public Form2(String passID)
{
InitializeComponent();
SelectID=passID;
}
之后,如果你想调用Form2DataSetFunction(),你可以使用下面的代码:
Form2DataSetFunction(passID);
另一种方法是在表单中创建一个Property,比如
public String passSelectID { get; set; }
那么当你初始化form2时你可以说:
Form2 Form2Obj = new Form2();
Form2Obj.passSelectID = SelectedID;
Form2Obj.ShowDialog();