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

Elc*_*_91 4 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);                    
Run Code Online (Sandbox Code Playgroud)

其中 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;
}
Run Code Online (Sandbox Code Playgroud)

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

dan*_*adu 5

您可以使用Windows Forms. 不幸的是,你不能使用DataRow直接对象(见本注释部分ctor中的Binding类)。改用表格/视图,在表单内:

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

传递给表单构造函数rowDataRow对象在哪里,dtpRecDatedtpLastModDateTimePicker控件。