我正在尝试编写一个简单的Compact Framework winforms应用程序。主窗体具有绑定到DataTable的DataGrid(包含来自xml文件的数据)。我想提出另一个显示当前记录详细信息的表单。我有类似下面的代码作为详细信息表单的构造函数。
public DetailsForm(DataTable dtLandlords, int Index) //the constructor
{
InitializeComponent();
lLandlordCode.DataBindings.Add("Text", dtLandlords, "LandlordID");
.......
}
我正在使用以下代码调用构造函数
Form frm = new LandlordDetailsForm(dtLandlords, dataGrid1.CurrentRowIndex);
frm.Show();
如何让它显示当前记录(在Index中指定 - 当前未使用)而不仅仅是第一条记录。或者有更好的方法我应该这样做吗?
答案 0 :(得分:1)
数据绑定“绑定”到提供的“视图”,目前您绑定到DataTable而不设置默认视图(因此它将默认为完整的表)。例如。 dtLandlords.DefaultView.RowFilter =“LandlordID = TheIdYouWant”;
另一种方法是将DataGrid / GridView本身添加到DataBingings,它将提供包含当前所选项目的默认视图。
编辑:添加了绑定到DataGridView的示例
这方面的一个例子是: 首先使用TextBox和DataGridView(默认名称)创建一个表单。然后将此代码放在表单的构造函数中。
DataTable dt = new DataTable();
dt.Columns.Add("Col1");
dt.Columns.Add("Col2");
DataRow dr;
dr = dt.NewRow();
dr[0] = "C1R1";
dr[1] = "C2R1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "C1R2";
dr[1] = "C2R2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "C1R3";
dr[1] = "C2R3";
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
this.textBox1.DataBindings.Add("Text", dataGridView1.DataSource, "Col1");
然后运行,并选择GridView中的项目,TextBox应自动更新所选的详细信息。注意:我在这里使用了DataGridView,我认为它也适用于DataGrids(我认为你正在使用)