某字段为int类型,需要在DataGridView中显示对应文本,(如1显示"男",2显示"女",3显示"阴阳人"),此列只用于显示,而不需要修改,因此不想将 ColumnType 设置为 DataGridViewComboBoxColumn 。
修改dataGridView1_DataBindingComplete事件
string s;
string a=dataGridView1.Rows[i].Cells["sex"].Value.ToString();
switch(a)
{case "1":s="男";break;case "2":s="女";break;case "3":s="阴阳人";break;default:s="";return;}
dataGridView1.Rows[i].Cells["sex"].Value = s;
却在运行中提示"不是 Int32 的有效值";请问高手是怎么实在这个的??谢谢!!!
修改dataGridView1_DataBindingComplete事件
string s;
string a=dataGridView1.Rows[i].Cells["sex"].Value.ToString();
switch(a)
{case "1":s="男";break;case "2":s="女";break;case "3":s="阴阳人";break;default:s="";return;}
dataGridView1.Rows[i].Cells["sex"].Value = s;
却在运行中提示"不是 Int32 的有效值";请问高手是怎么实在这个的??谢谢!!!
把SEX列隐藏
string s;
string a=dataGridView1.Rows[i].Cells["sex"].Value.ToString();
switch(a)
{case "1":s="男";break;case "2":s="女";break;case "3":s="阴阳人";break;default:s="";return;}
dataGridView1.Rows[i].Cells["SEXCHINESE"].Value = s; 其实用DataGridViewComboBoxColumn ,把 DisplayStyle属性设定为Nothing,就和TEXTBOX效果一样
<asp:TemplateField HeaderText="性别">
<ItemTemplate>
<asp:Label ID="lblSex" runat="server" Text='<%#ReturnSeX(Eval("sex").ToString())>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
后台把添加ReturnSeX这个方法
pubulic string ReturnSeX(string str)
{
if(str=="1")
return "男";
else if (str=="2")
return "女";
else return "阴阳人";
}
用case when
select (case when sex='1' then '男' when sex='2' then '女' when sex='3' then '阴阳人' else '' end) as sex from 您的表
这个方法我试过的,如果对DataGridView 进行排序(点列标题的那种),就乱套了,不过用ComboBoxColumn倒真是可行,谢谢了~~