许多小时的互联网搜索都没有找到关于这个问题的明确答案,所以我想我会重新哈希它。我需要将一个数据行传递给一个表单,然后将该表单中的控件绑定到数据行中的值。 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代码都已经定义,我不想绑定到DataAdapter等。我只是想将DataRow传递给表单,更新数据然后将其传递给它正确的CRUD方法。我会接受任何建议。谢谢!
答案 0 :(得分:4)
您可以使用Windows Forms
的数据绑定功能。不幸的是,您无法直接使用DataRow
对象(请参阅Binding
类的ctor
的备注部分)。而是在表格中使用表格/视图:
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
是DateTimePicker
控件。