ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转载]用C#简单实现主表与子表的联动关系

[转载]用C#简单实现主表与子表的联动关系

原创 Linux操作系统 作者:dinner1007 时间:2019-01-21 19:30:04 0 删除 编辑
用C#简单实现主表与子表的联动关系
用C#简单实现主表与子表的联动关系

如果想要实现两个DataGrid的主子表联动,可以参看这两篇文章。

http://www.syncfusion.com/faq/windowsforms/search/780.aspx

http://www.syncfusion.com/faq/windowsforms/search/1012.aspx

这里介绍的是ComboBox与DataGrid的主子表联动,其实并不像上面一样要使用到DataSet的Relations。具体步骤如下:

1. 创建主子表数据(我这里简化,可以从数据库获得):

private void CreateEmployeeTable( out DataTable dtEmployee )

{

dtEmployee = new DataTable();

dtEmployee.TableName = "EmployeeInfo";

//Set data columns

dtEmployee.Columns.Add( "EmployeeID", typeof( int ) );

dtEmployee.Columns.Add( "DepartmentID", typeof( int ) );

dtEmployee.Columns.Add( "Name", typeof( string ) );

dtEmployee.Columns.Add( "Phone", typeof( string ) );

dtEmployee.Columns.Add( "Address", typeof( string ) );

// Add data

dtEmployee.Rows.Add( new object[]{ 1, 1, "Sales1", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 2, 1, "Sales2", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 3, 2, "HR1", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 4, 2, "HR2", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 5, 3, "Tech1", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 6, 3, "Tech2", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 7, 4, "Software1", "*****","*****" } );

dtEmployee.Rows.Add( new object[]{ 8, 4, "Software2", "*****","*****" } );

}

2. 绑定主表数据到ComboBox:

private DataSet ds = null;

private void BindData()

{

ds = new DataSet();

DataTable dtDepartment, dtEmployee;

CreateDepartmentTable( out dtDepartment );

ds.Tables.Add( dtDepartment );

CreateEmployeeTable( out dtEmployee );

ds.Tables.Add( dtEmployee );

// Bind data to combobox

cmbDepartment.DataSource = ds.Tables["DepartmentInfo"];

cmbDepartment.DisplayMember = "DepartmentName";

cmbDepartment.ValueMember = "DepartmentID";

if( cmbDepartment.Items.Count > 0 )

BindDataGrid();

}

3. 设定ComboBox的SelectedIndexChanged事件:

private void cmbDepartment_SelectedIndexChanged(object sender, System.EventArgs e)

{

int nDepartmentID = 0;

try

{

nDepartmentID = Convert.ToInt32( cmbDepartment.SelectedValue.ToString() );

BindDataGrid();

}

catch{}

}

4. 根据当前ComboBox的选项去绑定DataGrid:

private void BindDataGrid()

{

DataView dv = new DataView( ds.Tables["EmployeeInfo"] );

dv.AllowDelete = false;

dv.AllowEdit = false;

dv.AllowNew = false;

dv.RowFilter = "DepartmentID = " + cmbDepartment.SelectedValue.ToString();

dv.RowStateFilter = DataViewRowState.CurrentRows;

dv.Sort = "EmployeeID ASC";

dtgEmployees.DataSource = dv;

}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/374079/viewspace-130568/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-08-23

  • 博文量
    1714
  • 访问量
    1477696