当在selectedIndexChanged上选择另一个时,如何显示自动datagridviewcomboboxcolumn值 [英] how to display automatic datagridviewcomboboxcolumn value when select another on selectedIndexChanged

查看:212
本文介绍了当在selectedIndexChanged上选择另一个时,如何显示自动datagridviewcomboboxcolumn值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

专家,

我是Uday Satardekar

在我的C#win应用程序之一中,我正在使用datagridview进行数据输入.
此datagridview仅包含25行.

在此datagridview中,有 2个datagridviewcombobox列国家的一个,而大陆的一个.

两个 datagridviewcomboboxcolumn 都绑定到数据库中相应的表( region,country ).国家/地区表包含来自地区表的ID.

现在,当用户选择国家/地区时,我希望它自动从表格中选择相应的地区.

为此,我正在使用 EditcontrolShowing 事件来绑定datagridviewcomboboxcolumn selectindexchanged .

例如

Hi Expert,

I am Uday Satardekar

In my one of C# win application,i am using datagridview for data entry.
This datagridview contains 25 rows only.

In this datagridview there are 2 datagridviewcomboboxcolumn 1 for country and one for continent.

Both datagridviewcomboboxcolumn bounded to respective table (region,country) from database. country table contains id from region table.

Now when user select country,i want it to automatically select resp region from table.

for this i am using EditcontrolShowing event for binding datagridviewcomboboxcolumn selectindexchanged.

eg

private void excelGridview_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
       {
           //testing


           ComboBox combo = e.Control as ComboBox;
           int column = excelGridview.CurrentCell.ColumnIndex;
           if (column == 7)
           {
               if (combo != null)
               {
                   combo.SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
                   combo.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
               }
           }

       }



私有void ComboBox_SelectedIndexChanged(对象发送者,EventArgs e)
{
{
试试
{
int column = excelGridview.CurrentCell.ColumnIndex;
int行= excelGridview.CurrentCell.RowIndex;

int country = Convert.ToInt32((((ComboBox)sender).SelectedValue);

MyConnect myCnn =新的MyConnect();
字符串connString = myCnn.getConnect().ToString(); //从MyConnnct调用

SqlConnection conn;
SqlCommand命令;
conn =新的SqlConnection(connString);
command =新的SqlCommand();

conn.Open();

试试
{
字符串查询=选择* FROM regioninfo区域INNER JOIN countryinfo country ON region.ID = country.regionID WHERE country.ID =" + country +";

//command.CommandText ="AllCurrRegions";
命令=新的SqlCommand(query,conn);

SqlDataReader reader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(阅读器);

cmbStatus.DataPropertyName =区域";
cmbStatus.DataSource = dt;
cmbStatus.DisplayMember ="regionname";
cmbStatus.ValueMember ="ID";

}
catch(ex1异常)
{
}
终于
{
conn.Close();
}
}
catch(Exception){}
}
}

在跟踪数据表时,将根据国家/地区值获取适当的值.
但是它没有显示国家的地区.

请帮助我解决此问题.



private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
{
try
{
int column=excelGridview.CurrentCell.ColumnIndex;
int row = excelGridview.CurrentCell.RowIndex;

int country = Convert.ToInt32(((ComboBox)sender).SelectedValue);

MyConnect myCnn = new MyConnect();
String connString = myCnn.getConnect().ToString(); //Call From MyConnnct

SqlConnection conn;
SqlCommand command;
conn = new SqlConnection(connString);
command = new SqlCommand();

conn.Open();

try
{
string query = "select * FROM regioninfo region INNER JOIN countryinfo country ON region.ID=country.regionID WHERE country.ID=" + country + "";

// command.CommandText = "AllCurrRegions";
command = new SqlCommand(query, conn);

SqlDataReader reader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);

cmbStatus.DataPropertyName = "Region";
cmbStatus.DataSource = dt;
cmbStatus.DisplayMember = "regionname";
cmbStatus.ValueMember = "ID";

}
catch (Exception ex1)
{
}
finally
{
conn.Close();
}
}
catch (Exception) { }
}
}

During tracing datatable fetching proper value according to country value.
But it not showing region for country.

Please Help me to sort out this problem.

推荐答案

存在系统Format.Exception.

我正在绑定int值,而datagridcombo包含Int64.

以下代码对我来说很好.


There is System Format.Exception.

I am binding int value and datagridcombo contains Int64.

following code works fine for me.


SqlDataReader reader = command.ExecuteReader();
                            DataTable dt = new DataTable();
                            dt.Load(reader);

                            var currentcell = excelGridview.CurrentCellAddress;
                            DataGridViewComboBoxCell cel = (DataGridViewComboBoxCell)excelGridview.Rows[currentcell.Y].Cells[8];

                            cel.Value = Convert.ToInt64(dt.Rows[0]["id"]);


这篇关于当在selectedIndexChanged上选择另一个时,如何显示自动datagridviewcomboboxcolumn值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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