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

    作者:观海看云个人开发历程知识库 - 博客园
    出处:http://www.cnblogs.com/zhangtao/
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    积水路面Wet Road Materials 2.3
    门控时钟问题
    饮料机问题
    Codeforces Round #340 (Div. 2) E. XOR and Favorite Number (莫队)
    Educational Codeforces Round 82 (Rated for Div. 2)部分题解
    Educational Codeforces Round 86 (Rated for Div. 2)部分题解
    Grakn Forces 2020部分题解
    2020 年百度之星·程序设计大赛
    POJ Nearest Common Ancestors (RMQ+树上dfs序求LCA)
    算法竞赛进阶指南 聚会 (LCA)
  • 原文地址:https://www.cnblogs.com/zhangtao/p/1631935.html
Copyright © 2011-2022 走看看