如何在DataGridView中绑定ComboBoxColumn [英] How to Bind ComboBoxColumn in DataGridView

查看:69
本文介绍了如何在DataGridView中绑定ComboBoxColumn的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在DataGridView中绑定ComboBoxColumn,而不是将其添加到DataGridView中,这意味着我在DataGridView中有一个ComboBox。只有我必须在其中显示数据。



在Web中我使用FindControl,但在Windows中如何获得ComboBox控件



另外如何在DataGridView的ComboBox中触发事件。

I want to Bind ComboBoxColumn in DataGridView, not to Add it into DataGridView, means I have a ComboBox in DataGridView. Only I have to display data in it.

In Web I used FindControl, but in Windows how can I Get ComboBox Control

Also how do I Fire Event in ComboBox of DataGridView.

推荐答案

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {

        if( dataGridView1.Rows[e.RowIndex].Cells["Combobox"].Value <>"")
         {
            //Do what u want
          }

       }


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WinDemo
{
    public partial class Form4 : Form
    {
        SqlConnection con = new SqlConnection("Server=.;DataBase=hospitalA;UID=sa;Pwd=sa;");
        DataGridViewComboBoxColumn cmbI;
        ComboBox cmb1; TextBox txtQ; string IN, IC, IR, IQ;
        public Form4()
        {
            InitializeComponent();
            cmbI = new DataGridViewComboBoxColumn();
            DataGridViewTextBoxColumn txt1 = new DataGridViewTextBoxColumn();
            DataGridViewTextBoxColumn txt2 = new DataGridViewTextBoxColumn();
            DataGridViewTextBoxColumn txt3 = new DataGridViewTextBoxColumn();
            DataGridViewTextBoxColumn txt4 = new DataGridViewTextBoxColumn();
            DataGridViewTextBoxColumn txt5 = new DataGridViewTextBoxColumn();
            dataGridView1.Columns.Add(cmbI);
            dataGridView1.Columns.Add(txt1);
            dataGridView1.Columns.Add(txt2);
            dataGridView1.Columns.Add(txt3);
            dataGridView1.Columns.Add(txt4);
            dataGridView1.Columns.Add(txt5);
            FillDDL();
        }
        void FillDDL()
        {
            string sqlId = "Select * From Items;";
            SqlDataAdapter dAdapter = new SqlDataAdapter(sqlId, con);
            DataTable dt = new DataTable();
            dAdapter.Fill(dt);
            cmbI.DataSource = dt;
            cmbI.DisplayMember = "it_name";
            cmbI.ValueMember = "ItemCode";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 ObjViewer = new Form1();
            this.Hide();
            ObjViewer.ShowDialog();
        }
        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == dataGridView1.Columns[0].Index)
            {
                cmb1 = e.Control as ComboBox;
                cmb1.SelectionChangeCommitted -= new EventHandler(comboBox1_SelectedIndexChanged);
                cmb1.SelectionChangeCommitted += new EventHandler(comboBox1_SelectedIndexChanged);
            }
            else if (dataGridView1.CurrentCell.ColumnIndex == dataGridView1.Columns[4].Index)
            {
                txtQ = e.Control as TextBox;
                txtQ.TextChanged -= new EventHandler(textBox1_TextChanged);
                txtQ.TextChanged += new EventHandler(textBox1_TextChanged);
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GetData();
            dataGridView1.CurrentRow.Cells[1].Value = cmb1.Text;
            dataGridView1.CurrentRow.Cells[2].Value = cmb1.SelectedValue;
            dataGridView1.CurrentRow.Cells[3].Value = IR;

            
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            dataGridView1.CurrentRow.Cells[5].Value = Convert.ToString(Convert.ToDecimal(IR) * Convert.ToDecimal(txtQ.Text));
        }
        void GetData()
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT * from Items where ItemCode=''" + cmb1.SelectedValue + "''", con);

            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                //IN = dr["it_name"].ToString();
                IR = dr["sa_price"].ToString();
            }
            con.Close();
        }
    }
}


这篇关于如何在DataGridView中绑定ComboBoxColumn的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆