产品采购单子表在数据库中的存储方式
采购单号/产品编号/数量/备注....产品信息表
产品编号/产品名称/产品描述/单位在采购单Form中(DataGridView)要表现为
产品名称(来自产品信息表)/产品描述(来自产品信息表)/单位(来自产品信息表)/采购数量/备注...
目前产品名称列使用DataGridViewComboboxColumn,DataSource=产品信息表,ValueMember=产品编号,DisplayMember=产品名称
请教各位,如何显示出产品描述及单位.最好可以给出现实现代码.谢谢!

解决方案 »

  1.   

    去找下Xceed DataGrid  那个做出来蛮炫的,而且看着帮助文档,几分钟就解决了
      

  2.   

    补充一下,需要WinForm的.如果是第三方控件,最好的免费的.谢谢了
      

  3.   

    以下代码不晓得是不是你需要的东西,里面是我写的一个类的部分代码:
    (包括连接,和判断是否连接):        public SqlConnection Cnn = new SqlConnection("Data Source=;Initial Catalog=zhySys;User Id=sa;Password=");
            public SqlDataAdapter DataAd = null;
            public SqlDataReader DataRe = null;
            public SqlCommand Com_mand = null;
            public SqlCommandBuilder ComBuider = null;
            public DataSet DataSe = null;        public void Cnn_HS()
            {
                if (Cnn.State == ConnectionState.Open)  //判断连接状况,如果打开,就把连接关闭
                {
                    Cnn.Close();
                } 
                Cnn.Open(); //打开连接
            }       public void DataSet_Fill(string Select_SQL,DataGridView dataGridView) //填充dataset和可复制功能函数
            {
                Com_mand = new System.Data.SqlClient.SqlCommand(Select_SQL, Cnn);
                Com_mand.CommandTimeout = 0;
                DataAd = new System.Data.SqlClient.SqlDataAdapter();
                DataAd.SelectCommand = Com_mand;
                DataSe = new DataSet();
                DataAd.Fill(DataSe, "hz");
                dataGridView.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
                dataGridView.DataSource=DataSe.Tables[0];
            }
    我想这个一定可以帮得上你的忙的,你可以自己仔细看看代码就明白了.
      

  4.   


    楼主的意思是 产品名称都加进ComboboxColumn,然后根据选择不同的项,显示产品描述及单位
      

  5.   

    还是说 产品描述及单位 也显示在 ComboboxColumn 里面?
      

  6.   

    你可以在CellValueChanged事件,捕捉到产品列的改动,然后取得相关的描述和单位,再行赋值,大概流程代码如下: private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 0)//判断是否为第一列(即产品名称列)
                {
                    //取得产品名称单元格信息
                    string strName = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
                    //...通过该值,取得相关的描述和单位                dataGridView1[1, e.RowIndex].Value = "Description";//给当前行的第2个单元格(此为描述列)赋值                dataGridView1[2, e.RowIndex].Value = "Unit";//给当前行的第3个单元格(此为单位)赋值
                }
            }