小弟用DataGrid绑定了一个DataTable。在DataTable中有一列是性别。在数据库中我是使用0和1来表示男女的。可我想在datagrid中使用“男”和“女”来显示。
我知道,如果可以在存储过程中使用when和case等语句实现这样的转变,可我现在用的是sql查询语句,所以我不知道该怎么办了?求教各位达人?
小弟的要求是,实现上面的转换。但不改变DataTable中的存储格式,即只是在绑定的时候才转换,在DataTable中还是以0和1的方式来表示。
我知道,如果可以在存储过程中使用when和case等语句实现这样的转变,可我现在用的是sql查询语句,所以我不知道该怎么办了?求教各位达人?
小弟的要求是,实现上面的转换。但不改变DataTable中的存储格式,即只是在绑定的时候才转换,在DataTable中还是以0和1的方式来表示。
解决方案 »
- jquery 如何遍历如下json 形成table
- textbox
- 100求解,网上银行的插件安装原理?
- 哪位能将下面的c# 函数翻译为JS
- 一个初级的问题:何为Memo?
- 请问如何用在页面上显示一个Private形式的变量?
- 棘手啊,怎么取不到DropDownList的选择值了??
- 为什么服务器的事件查看器中总是出现警告信息?
- 多表查询中的记录定位问题???
- 高手进,asp.net子线程弹无法弹出自己定义对话框
- dataGrid删除出现错误,(ASP.NET),急在线等 ,搞定结贴!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!{"语法错误 (操作符丢失) 在查询表达式 '111 where w
- 怎么让Datagrid中的CheckBox根据表中bit类型字段的值来确定是否选中?
f1,f2,
f3=CASE WHEN sexField=0 THEN '男' ELSE '女' END
from table1
2.在grid_ItemDataBound中加
private void grid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if((e.Item.ItemType==ListItemType.Item)|| e.Item.ItemType==ListItemType.AlternatingItem))
{
int Sex = (int)DataBinder.Eval(e.Item.DataItem, "Sex");
e.Item.Cells[2].Text=Sex==0?"女":"男";
}
}
if((e.Item.ItemType==ListItemType.Item)|| e.Item.ItemType==ListItemType.AlternatingItem))
{
int Sex = (int)DataBinder.Eval(e.Item.DataItem, "Sex");
e.Item.Cells[2].Text=Sex==0?"女":"男";
}
{
if(e.item.itemindex >=0) 这个是指定绑定datagrid的数据项才用上下面这句
{
int Sex = (int)DataBinder.Eval(e.Item.DataItem, "Sex"); 得到数据源数据项中sex的内容
e.Item.Cells[2].Text=(Sex==0?"女":"男"); 改变datagrid性别列的值
}
}
行 124:{
行 125: int Sex = (int)DataBinder.Eval(e.Item.DataItem, "Sex");
行 126: e.Item.Cells[2].Text = Sex == 0 ? "女" : "男";
行 127:}
我按大家的说法作了。可提示说制定的转换无效。错误的地方为125行
在datagrid中关于性别的绑定语法为
<asp:BoundColumn DataField="Sex" HeaderText="性别">
<HeaderStyle HorizontalAlign="Center" Width="30px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>为什么会出错呢?谢谢大家了
{
if(e.Item.ItemIndex != -1)
{
int Sex = Convert.ToInt32(e.Item.Cells[2].Text);
e.Item.Cells[2].Text =(Sex==0?"女":"男");
}
}
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.OverflowException: 值对于 Int32 太大或太小。源错误: 行 123:if(e.Item.ItemIndex != -1)
行 124:{
行 125: int Sex = Convert.ToInt32(e.Item.Cells[2].Text);
行 126: e.Item.Cells[2].Text =(Sex==0?"女":"男");
行 127:}
源文件: d:\work\sloa\componentpage\hr\employeeinfomanage.aspx.cs 行: 125 呵呵还是有错的
<asp:Label id=Label1 runat=server Text='<#DataBinder.Eval(Container.DataItem,"Sex").ToString()=="0"?"男":"女"%>' />
当然,前提是你的Sex字段确实是为0或为1