【发布时间】:2016-09-13 05:10:33
【问题描述】:
我使用两个DataGridViews 创建了一个主从视图,其中BindingSources 连接到同一个数据库。数据库有两个表,我在Microsoft tutorial 之后在它们之间建立了一个主从视图。这是负责它的代码:
private void GetData()
{
try
{
// Specify a connection string. Replace the given value with a
// valid connection string for a Northwind SQL Server sample
// database accessible to your system.
String connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost";
SqlConnection connection = new SqlConnection(connectionString);
// Create a DataSet.
DataSet data = new DataSet();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
// Add data from the Customers table to the DataSet.
SqlDataAdapter masterDataAdapter = new
SqlDataAdapter("select * from Customers", connection);
masterDataAdapter.Fill(data, "Customers");
// Add data from the Orders table to the DataSet.
SqlDataAdapter detailsDataAdapter = new
SqlDataAdapter("select * from Orders", connection);
detailsDataAdapter.Fill(data, "Orders");
// Establish a relationship between the two tables.
DataRelation relation = new DataRelation("CustomersOrders",
data.Tables["Customers"].Columns["CustomerID"],
data.Tables["Orders"].Columns["CustomerID"]);
data.Relations.Add(relation);
// Bind the master data connector to the Customers table.
masterBindingSource.DataSource = data;
masterBindingSource.DataMember = "Customers";
// Bind the details data connector to the master data connector,
// using the DataRelation name to filter the information in the
// details table based on the current row in the master table.
detailsBindingSource.DataSource = masterBindingSource;
detailsBindingSource.DataMember = "CustomersOrders";
}
catch (SqlException)
{
MessageBox.Show("To run this example, replace the value of the " +
"connectionString variable with a connection string that is " +
"valid for your system.");
}
}
而且效果很好。接下来,我向主视图添加了一个自定义列,并按照相同的教程使用此 sn-p 编辑主视图的外观。
// Changes how cells are displayed depending on their columns and values.
private void masterGridView_CellFormatting(object sender,
System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
{
// Set the background to red for negative values in the Balance column.
if (masterGridView.Columns[e.ColumnIndex].Name.Equals("CustomColumn"))
{
e.CellStyle.BackColor = Color.Red;
e.CellStyle.SelectionBackColor = Color.DarkRed;
}
}
现在我想在选择不同的主视图时获取每个详细视图中的行数。我会将其添加到自定义列中。这就是我卡住的地方。如何从最后一个 sn-p 中的单元格格式化程序事件中访问计数?我也可以访问视图和数据源。
【问题讨论】:
标签: c# database data-binding datagridview datasource