c# datagirdview控件内嵌combox方法与内嵌combox可下拉可编辑与combox加载数据库数据

首先从工具栏拖拽一个datagirdview然后按照图片所选进行操作这里写图片描述
选择完之后添加成功一个带下拉框的datagirdview,然后在后台进行数据加载绑定,我这里是写了一个服务从服务器数据库获取的下拉数据
这里写图片描述
这时总共有三个框,第一个框从服务里取数据,返回一个datatable。
然后this.Analy.ValueMember设置值字段,下边设置显示字段。
再下边是把数据只取两个字段从datatable里,你也可以不这样,我只是为了明白。
然后转换成dataview类型赋值给combox我发现combox里的行类型是dataviewrow所以这样弄了一下,然后从表里取行,赋值给combox,然后现在要做下拉可编辑了
这里写图片描述加上这一句关键的话:this.dataGridView1.EditingControlShowing += new System.Windows.Forms.DataGridViewEditingControlShowingEventHandler(this.EnabledComboBoxWrite);
然后是两个方法里代码,你自行添加修改一下就行
private void EnabledComboBoxWrite(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox cb = e.Control as ComboBox;
if (cb != null)
{
cb.DropDownStyle = ComboBoxStyle.DropDown;
cb.Validating += new System.ComponentModel.CancelEventHandler(cb_Validating);
}

    }
    void cb_Validating(object sender, System.ComponentModel.CancelEventArgs e)
    {
        DataGridViewComboBoxEditingControl cbo = (DataGridViewComboBoxEditingControl)sender;
        if (cbo.Text.Trim() == string.Empty) return;

        DataGridView grid = cbo.EditingControlDataGridView;
        object value = cbo.Text;

        if (cbo.Items.IndexOf(value) == -1)
        {
            DataRow[] drs = Dtb_KYData3.Select("V_1_10000005='" + value+"'");
            if (drs.Length > 0) return;
            DataGridViewComboBoxColumn cboCol = (DataGridViewComboBoxColumn)grid.Columns[grid.CurrentCell.ColumnIndex];
            DataTable dtv=Dtb_KYData3.Clone();
            DataRow drv = dtv.NewRow();
            DataRow drv3 = Dtb_KYData3.NewRow();
            drv["V_1_10000005"] = value;
            drv3["V_1_10000005"] = value;
            drv["ID"] = value;
            Dtb_KYData3.Rows.Add(drv3);
            dtv.Rows.Add(drv);
            DataView dv = new DataView(dtv);
            foreach (DataRowView drvo in dv)
            {
                cbo.Items.Add(drvo);
                cboCol.Items.Add(drvo);

     grid.CurrentCell.Value = drvo;

}
}
}
}到此功能完毕这里写图片描述下拉后输入内容会自动往下拉里添加你输入的数据
程序源码下载地址:https://download.csdn.net/download/hello_mr_anan/10633390

猜你喜欢

转载自blog.csdn.net/hello_mr_anan/article/details/81448103