C# 将数据行传递给窗体并将控件绑定到该窗体

C# 将数据行传递给窗体并将控件绑定到该窗体,c#,data-binding,crud,datarow,C#,Data Binding,Crud,Datarow,经过数小时的互联网搜索,这个问题还没有得到明确的答案,所以我想我会重新对它进行分析。我需要将数据行传递给表单,然后将该表单中的控件绑定到数据行中的值。Datarow是由类方法创建的: DataRow newRow = cusData.PrimeRecord(); newRow["recordid"] = cusData.GetRecordID(); newRow["recdate"] = DateTime.Now; newRow["lastmod"] = DateTime.Now; CusUpd

经过数小时的互联网搜索,这个问题还没有得到明确的答案,所以我想我会重新对它进行分析。我需要将数据行传递给表单,然后将该表单中的控件绑定到数据行中的值。Datarow是由类方法创建的:

DataRow newRow = cusData.PrimeRecord();
newRow["recordid"] = cusData.GetRecordID();
newRow["recdate"] = DateTime.Now;
newRow["lastmod"] = DateTime.Now;
CusUpdate updateFrm = new CusUpdate(newRow);                    
其中PrimeRecord()方法由以下代码定义:

public DataRow PrimeRecord(){    
    DataTable dt = new DataTable();
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM "+tableName+" LIMIT 1",sqlConnect);
    MySqlDataAdapter da = new MySqlDataAdapter(cmd);
    da.FillSchema(dt,SchemaType.Mapped);
    DataRow dr = dt.NewRow();
    return dr;
}

我的所有数据库CRUD代码都已定义,我不想绑定到DataAdapters等。我只想将DataRow传递给表单,更新数据,然后将其传递给适当的CRUD方法。我会接受任何建议。谢谢

您可以使用Windows窗体的数据绑定功能。不幸的是,您不能直接使用
DataRow
对象(请参阅
Binding
类中本节的备注部分)。改为在表单内部使用表/视图:

DataView dv = row.Table.DefaultView;
dv.RowFilter = "recordid=" + row["recordid"].ToString();
dtpRecDate.DataBindings.Add("Value", dv, "recdate");
dtpLastMod.DataBindings.Add("Value", dv, "lastmod");

其中
row
是传递给表单构造函数的
DataRow
对象,
dtpRecDate
dtpLastMod
是控件。

Dan,这正是我所需要的。谢谢你的帮助!