1

我想做一个主/详细页面,其中父(客户信息)是窗口上半部分的表单,然后是屏幕下半部分的订单数据网格视图?

我发现了一篇文章,该示例在此处使用 2 个 datagridviews并尝试从那里开始。

我从包含 ParentID 的单个文本框开始(我使用的是 Northwind 客户/订单)。这适用于现有记录。我如何处理想要同时添加新客户和订单的问题?

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        DataSet data;
        private BindingSource masterBindingSource = new BindingSource();
        private BindingSource detailsBindingSource = new BindingSource();

        public Form1()
        {
            InitializeComponent();
        }

        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=.\\SQLEXPRESS";
                SqlConnection connection = new SqlConnection(connectionString);

                // Create a 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 where CustomerID = @id", connection);                
                masterDataAdapter.SelectCommand.Parameters.AddWithValue("@id", lblParentId.Text);
                masterDataAdapter.Fill(data, "Customers");

                // Add data from the Orders table to the DataSet.
                SqlDataAdapter detailsDataAdapter = new
                    SqlDataAdapter("select * from Orders where CustomerID = @id", connection);
                detailsDataAdapter.SelectCommand.Parameters.AddWithValue("@id", lblParentId.Text);
                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.");
            }
        }

        private void btnLoadDetail_Click(object sender, EventArgs e)
        {
            lblParentId.Text = textBox1.Text;
            GetData();
            //textBox1.DataBindings.Add("Text", data.Tables[0], "CustomerID");
            dataGridView1.DataSource = detailsBindingSource;
        }
    }
}
4

1 回答 1

0

这篇博文将对您有所帮助。 http://blogs.msdn.com/b/bethmassi/archive/2009/09/15/inserting-master-detail-data-into-a-sql-server-compact-edition-database.aspx

于 2013-08-30T09:02:50.637 回答