将数据行传递给表单并将控件绑定到表单

时间:2013-03-23 13:34:01

标签: c# data-binding crud datarow

许多小时的互联网搜索都没有找到关于这个问题的明确答案,所以我想我会重新哈希它。我需要将一个数据行传递给一个表单,然后将该表单中的控件绑定到数据行中的值。 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方法。我会接受任何建议。谢谢!

1 个答案:

答案 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对象,而dtpRecDatedtpLastModDateTimePicker控件。