zoukankan      html  css  js  c++  java
  • DataGridViewComboBoxColumn 使用

    用于编辑单元格时间时发生

    private void dgvBreed_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                EditingControl = e.Control;

                if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
                {
                    ComboBox cmb = (ComboBox)e.Control;

                    if (cmb.Tag == null)
                    {
                        cmb.SelectedIndexChanged += new EventHandler(InformHandle_SelectedIndexChanged);
                    }


                    cmb.Tag = dgvBreed.CurrentRow.Index;
                }
                else if (dgvBreed.Columns[dgvBreed.CurrentCell.ColumnIndex].Name == "报价")
                {
                    TextBox txt = (TextBox)e.Control;

                    txt.KeyDown += new KeyEventHandler(dgvBreed_KeyDown);
                }
               
            }

    private void InformHandle_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (!IsLockCombox)
                {
                    DataGridViewRow row = ((DataGridView)((System.Windows.Forms.Control)sender).Parent.Parent).CurrentRow;
                    ComboBox cmb = (ComboBox)sender;

                    if (cmb.SelectedValue != null && int.Parse(cmb.Tag.ToString()) == dgvBreed.CurrentRow.Index)
                    {
                        string OldValue = dgvBreed.CurrentCell.Value.ToString();
                        string NewValue = cmb.SelectedValue.ToString();
                        if (OldValue != NewValue )
                        {
                            switch (NewValue)
                            {
                                #region 替代品种
                                case "替代品种":
                                    {
                                       
                             
                                       
                                        BreedReplace breedreplace = new BreedReplace();

                                        breedreplace.ShowDialog();

                                        if (breedreplace.ReplaceID != -1)
                                        {
                                            DataTable dt = DataManage.getDataLib(DataLibtype.InformBreed);
                                            //dt.Columns.Remove("库存");
                                            DataRow[] dr = dt.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value.ToString(), "", DataViewRowState.CurrentRows);
                                            if (dr.Length > 0)
                                            {
                                                if (dt保存信息.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value.ToString() + "and 库存 = '"+OldValue+"'", "", DataViewRowState.CurrentRows).Length <= 0)
                                                    dt保存信息.Rows.Add(dr[0].ItemArray);
                                            }


                                            row.Cells["中包报价"].Value = 0;
                                            row.Cells["报价"].Value = 0;
                                            row.Cells["数量"].Value = 0;
                                            row.Cells["件数"].Value = 0;
                                            row.Cells["中包数量"].Value = 0;

                                            row.Cells["销售品种编号"].Value = breedreplace.ReplaceID;
                                            row.Cells["销售品种"].Value = breedreplace.ReplaceName;
                                            row.Cells["包装"].Value = breedreplace.S包装;
                                            row.Cells["中包装"].Value = breedreplace.S中包装;
                                        }
                                        else
                                        {
                                            IsLockCombox = true;

                                            for (int i = 0; i < cmb.Items.Count; i++)
                                            {
                                                if (cmb.Items[i].ToString().Equals(OldValue))
                                                {
                                                    cmb.SelectedIndex = i;
                                                    break;
                                                }
                                            }

                                            IsLockCombox = false;
                                        }

                                        break;
                                    }
                                #endregion

                                #region 正常
                                case "正常":

                                    if (OldValue == "替代品种")
                                    {

                                        DataTable dt = DataManage.getDataLib(DataLibtype.InformBreed);//.Rows.Add(dr[0].ItemArray);
                                        DataRow[] dr = dt保存信息.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value.ToString() + "and 库存 = '正常'", "", DataViewRowState.CurrentRows);
                                        DataRow[] drr = dt.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value.ToString(), "", DataViewRowState.CurrentRows);
                                        if (dr.Length > 0)
                                        {
                                            drr[0]["采购数量"] = dr[0]["采购数量"];
                                            drr[0]["采购件数"] = dr[0]["采购件数"];
                                            drr[0]["采购中包数量"] = dr[0]["采购中包数量"];
                                            drr[0]["数量"] = dr[0]["数量"];
                                            drr[0]["件数"] = dr[0]["件数"];
                                            drr[0]["中包数量"] = dr[0]["中包数量"];

                                            drr[0]["报价"] = dr[0]["报价"];
                                            drr[0]["中包报价"] = dr[0]["中包报价"];
                                        }

                                        drr[0]["销售品种编号"] = row.Cells["采购品种编号"].Value;
                                        drr[0]["销售品种"] = 0;

                                    }
                                    else
                                    {
                                        DataTable dt = DataManage.getDataLib(DataLibtype.InformBreed);
                                        DataRow[] drr = dt.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value.ToString(), "", DataViewRowState.CurrentRows);
                                        if (drr.Length > 0)
                                        {
                                            drr[0]["数量"] = drr[0]["采购数量"].ToString();
                                            drr[0]["件数"] = drr[0]["采购件数"].ToString();
                                            drr[0]["中包数量"] = drr[0]["采购中包数量"].ToString();
                                          
                                        }
                                    }

                                    break;
                                #endregion

                                #region 不足
                                case "不足":
                           
                                    if (OldValue == "替代品种")
                                    {
                                        DataTable dt = DataManage.getDataLib(DataLibtype.InformBreed);
                                        DataRow[] dr = dt保存信息.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value + "and 库存 = '不足'", "", DataViewRowState.CurrentRows);
                                        DataRow[] drr = dt.Select("采购品种编号 = " + row.Cells["采购品种编号"].Value.ToString(), "", DataViewRowState.CurrentRows);

                                        if (dr.Length > 0)
                                        {
                                            drr[0]["采购数量"] = dr[0]["采购数量"];
                                            drr[0]["采购件数"] = dr[0]["采购件数"];
                                            drr[0]["采购中包数量"] = dr[0]["采购中包数量"];
                                            drr[0]["数量"] = dr[0]["数量"];
                                            drr[0]["件数"] = dr[0]["件数"];
                                            drr[0]["中包数量"] = dr[0]["中包数量"];

                                            drr[0]["报价"] = dr[0]["报价"];
                                            drr[0]["中包报价"] = dr[0]["中包报价"];
                                        }

                                        row.Cells["销售品种编号"].Value = row.Cells["采购品种编号"].Value;
                                        row.Cells["销售品种"].Value = "";

                                    }
                                    row.Cells["数量"].Value = row.Cells["采购数量"].Value.ToString();
                                    row.Cells["件数"].Value = row.Cells["采购件数"].Value.ToString();
                                    break;

                                case "断货":
                                    row.Cells["数量"].Value = 0;
                                    row.Cells["件数"].Value = 0;
                                    row.Cells["中包数量"].Value = 0;
                                    break;
                                case "不经营":
                                    row.Cells["数量"].Value = 0;
                                    row.Cells["件数"].Value = 0;
                                    row.Cells["中包数量"].Value = 0;
                                    break;

                                #endregion

                                default:


                                    break;
                            }
                        }
                    }
                   
                    dgvBreed.Refresh();
                }
            }

    http://hi.baidu.com/loveliulin09/blog/item/291504ca57178116bf09e658.html

    http://topic.csdn.net/u/20070514/14/611b191f-eff4-423f-9c9b-29977f26482f.html

    http://blog.csdn.net/freeliver54/archive/2009/10/27/4735848.aspx

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace Sys
    {
        public partial class Form3 : Form
        {
            public Form3()
            {
                InitializeComponent();
            }

            private void Form3_Load(object sender, EventArgs e)
            {
                dataGridView1.AllowUserToAddRows = false;
                dataGridView1.AutoGenerateColumns = false;

                using (SqlConnection sqlconn = new SqlConnection("server=.;uid=sa;pwd=sa;database=xx"))
                {
                    string sql1 = @"select userid,fullname,a.[description],b.ugroupid
                                    from users a left outer join usergroup b
                                    on a.grade=b.ugroupid";
                    string sql2 = "select distinct ugroupid,[description] from usergroup";

                    DataGridViewComboBoxColumn dgvComboBoxColumn = dataGridView1.Columns["grade"] as DataGridViewComboBoxColumn;
                    dgvComboBoxColumn.DataPropertyName = "ugroupid";
                    dgvComboBoxColumn.DataSource = GetTable(sql2).DefaultView;//必须在设置dataGridView1的DataSource的属性前设置
                    dgvComboBoxColumn.DisplayMember = "description";
                    dgvComboBoxColumn.ValueMember = "ugroupid";

                    dataGridView1.DataSource = GetTable(sql1).DefaultView;//一定要在dgvComboBoxColumn的DataSource后设置
                }
            }

            private DataTable GetTable(string sql)
            {
                using (SqlConnection sqlconn = new SqlConnection("server=.;uid=sa;pwd=yuling1310;database=smls"))
                {
                    DataTable dt = new DataTable();
                    SqlDataAdapter sqlda = new SqlDataAdapter(sql, sqlconn);
                    sqlda.Fill(dt);
                    return dt;
                }
            }
        }
    }

    注意事项:
    .注意其ValueMember的DataType与DataPropertyName对应的列的DataType要相同,他不会为你做类型转换的。
    2.编程设置显示样式时注意一定要在设置DataSource之前设置DataGridViewComboBoxColumn的DataSource等属性。


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/freeliver54/archive/2009/10/27/4735848.aspx

    作者:wpf之家
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    .Net Frameworks versions
    noteJavascript::string2Date for new Date(str)
    noteMS questions
    note删除Visual Studio recent Projects list
    noteshow hidden files
    sql trick
    拯救MySql 签名
    数据结构——栈和队列
    the summary of loop structure in C
    the summury of array in C.
  • 原文地址:https://www.cnblogs.com/wpf123/p/2347385.html
Copyright © 2011-2022 走看看