首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在gridview中加入combobox中这段代码老掉牙报错

2012-12-15 
在gridview中加入combobox中这段代码老报错 private void datagridview1_DataBindingComplete(object send

在gridview中加入combobox中这段代码老报错
 private void datagridview1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Cells[11].Value != null && dataGridView1.Rows[i].Cells[11].ColumnIndex == 11)
                {
                    dataGridView1.Rows[i].Cells[11].Tag = dataGridView1.Rows[i].Cells[11].Value.ToString();
                    if (dataGridView1.Rows[i].Cells[11].Value.ToString() == "3")
                    {
                        dataGridView1.Rows[i].Cells[11].Value = "领用";
                    }
                    else if (dataGridView1.Rows[i].Cells[11].Value.ToString() == "4")
                    {
                        dataGridView1.Rows[i].Cells[11].Value = "虚拟件";
                    }
                    else if (dataGridView1.Rows[i].Cells[11].Value.ToString() == "1")
                    {
                        dataGridView1.Rows[i].Cells[11].Value ="入库倒冲";
                    }
                }
            }
        }


[最优解释]

引用:
引用:你这列dataGridView1.Rows[i].Cells[11].Value 绑定的byte类型的?
是数据库里是tinyint型。在C#中就会是byte类型


知道你想要干什么了,,有2中方法:
第一中:你显示的时候可以再数据库中修改后直接显示在界面就可以了
用 Case When Zhen 将数字改成你想要的,
第二种用DataGridView的CellFormating事件

        /// <summary>
        /// datagridview数据格式化,
        /// </summary>
        /// <param name="sender"></param>


        /// <param name="e"></param>
        private void DgvOverTime_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 11)
            {
                DataGridViewRow row = this.DgvOverTime.Rows[e.RowIndex];
                if (row != null)
                {
                    if (row.Cells["finishDates"].Value.ToString() != null && row.Cells["finishDates"].Value.ToString() != "3")
                    {
                        e.Value = "领用";
                    }
                    else if()
                    { }
                    else
                    {}
                }
            }
        }
[其他解释]
dataGridView1.Rows[i].Cells[11].Value = "领用";

这里要求填写byte类型的值,你写的字符串
[其他解释]
可以把“领用”定义为枚举项,并赋值为3
,其余的类似
[其他解释]
你这列dataGridView1.Rows[i].Cells[11].Value 绑定的byte类型的?
[其他解释]
你数据库里面或者数据源中“领用”这个字段的类型是 字节byte(当字节值为3的时候,你绑定了) ,应该定义数据源中(就是那个“3”为字符串型就可以了)为字符串型,才可以。
[其他解释]

引用:
你数据库里面或者数据源中“领用”这个字段的类型是 字节byte(当字节值为3的时候,你绑定了) ,应该定义数据源中(就是那个“3”为字符串型就可以了)为字符串型,才可以。

可是dataGridView1.Rows[i].Cells[11].Value会直接将"领用"传入数据库,其实我想要的是‘3’的值而不是"领用"。。。有什么方法解决么?高手
[其他解释]
引用:
你这列dataGridView1.Rows[i].Cells[11].Value 绑定的byte类型的?

是数据库里是tinyint型。在C#中就会是byte类型
[其他解释]
引用:
引用:你数据库里面或者数据源中“领用”这个字段的类型是 字节byte(当字节值为3的时候,你绑定了) ,应该定义数据源中(就是那个“3”为字符串型就可以了)为字符串型,才可以。
可是dataGridView1.Rows[i].Cells[11].Value会直接将"领用"传入数据库,其实我想要的是‘3’的值而不是"领用"。。。有什么方法解……


你可以定义一个枚举,或者机构体
你插入数据库之前,判断一下,如果当前值是“领用”你就插入3,如果是其他的,你就插入对应的值啊
[其他解释]
引用:
引用:引用:你这列dataGridView1.Rows[i].Cells[11].Value 绑定的byte类型的?
是数据库里是tinyint型。在C#中就会是byte类型

知道你想要干什么了,,有2中方法:
第一中:你显示的时候可以再数据库中修改后直接显示在界面就可以了
用 Case Wh……
高手。谢谢了

热点排行