请教DataGrid绑定列格式化的一个问题 DataGrid有一绑定列,绑定的数据为int型的1或0,显示的时候需要显示为Y或N,如何实现?(不修改数据库)。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把你的数据作为一个DataSet输出,然后在和DataGrid绑定。可以参考下下面的代码(命名不大规范)private DataSet GetDepartmentName(string ygid) { DataSet rDs=null; DataSet ds=new DataSet(); int count=0; try { string sqlstr="select * from tab_bmpurview where userid='"+ygid+"'"; ds=data1.dbbind(sqlstr); if(ds !=null) { if(ds.Tables[0].Rows.Count >0) { foreach(DataRow row in ds.Tables[0].Rows ) { count++; string bmid=""; string bmname=""; bmid=row["bmid"].ToString(); string department="select * from tab_zzjg where id='"+bmid+"'"; bmname=data1.readout(department,1); //读取部门名称 if(count ==1) { rDs=new DataSet(); System.Data.DataTable myTable=new DataTable(); myTable.TableName ="jxgl_gl"; myTable.Columns.Add("bmid",System.Type.GetType("System.String")); myTable.Columns.Add("bmname",System.Type.GetType("System.String")); rDs.Tables.Add(myTable); } DataRow myrow=rDs.Tables[0].NewRow() ; myrow["bmid"]=bmid; myrow["bmname"]=bmname; rDs.Tables[0].Rows.Add(myrow); } } else { rDs=new DataSet(); System.Data.DataTable myTable=new DataTable(); myTable.TableName ="jxgl_gl"; myTable.Columns.Add("bmid",System.Type.GetType("System.String")); myTable.Columns.Add("bmname",System.Type.GetType("System.String")); rDs.Tables.Add(myTable); //填充数据 DataRow myrow=rDs.Tables[0].NewRow() ; myrow["bmid"]="1"; myrow["bmname"]="--没有记录--"; rDs.Tables[0].Rows.Add(myrow); } } } catch(Exception e) { rDs=null; } return rDs; } 没有更简单的方法?比如设计DataGrid时格式化 TEXT='<%# DataBind.Eval(Container.DataItem,"字段").ToString()=="1"?"Y":"N"%>' 选择的时候在sql语句里处理好,select 字段 case 1 then 'Y' else 'N' from tab_bmpurview where userid='"+ygid+"'" 你可以試試這個方法:在你邦定數據的時候,把DataGrid绑定列隱藏,然後在邦定列的後面新增一列,循環DataGrid,根據绑定列的值對新增列賦值。一個循環就可以解決了。 方法1:可以在 DataGrid1_ItemDataBound事件里判断 当在此之前加一个隐藏列,来绑定‘1’或'0',然后用另外一列显示 ‘N’或‘Y’{ if(e.item.cell[i].Equals("1")) { e.item.cell[i+1].text = 'N' } else {...}} 方法2:在数据库端处理,建议采用 zqsntws(轻松)兄的办法 select case 字段 when 0 then 'Y' when 1 then 'N' end as txtstate from table jerrie_1() ( ) 信誉:100 2006-01-13 11:27:00 得分: 0 TEXT='<%# DataBind.Eval(Container.DataItem,"字段").ToString()=="1"?"Y":"N"%>' 觉得这个方法好点,以前类似的贴子也是这样解答的.这些东西最好放在前端处理.而且又方便.直接用SQL取值时就转换是可以,但用户需求一变呢?你又得去改了 //给DataGrid加文字说明 private void StusUserInfoList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem)) { bool isxy=Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem,"IsNeedKey")); if(isxy==true) { e.Item.Cells[3].Text="Y."; e.Item.Cells[3].BackColor=System.Drawing.Color.Tomato; } else { e.Item.Cells[3].Text="N."; } } } 主文件引用JS文件时,使用网站直接路径报错 送分大行动 请问用vs2005开发的b/s程序怎么发布,谢谢了 一条sql语句。 打开datagrid编辑网页时,或者新增保存时运行速度很慢 那位给一个msdn的中文在线网址? .net框架 架构类的相关知识 急求!!!急求专家解答(关于ASP.NET-WAP) 又一个简单问题 Forms验证的一个问题,为什么会这样??? 问题还是没有搞定,asp.net中双击textbox弹出一模态窗口,在模态窗口中选择数据,点击“确认”按钮后,关闭窗口,将选择的值赋值给双击的 怎么取得TreeView节点的字段值??
private DataSet GetDepartmentName(string ygid)
{
DataSet rDs=null;
DataSet ds=new DataSet();
int count=0;
try
{
string sqlstr="select * from tab_bmpurview where userid='"+ygid+"'";
ds=data1.dbbind(sqlstr);
if(ds !=null)
{
if(ds.Tables[0].Rows.Count >0)
{
foreach(DataRow row in ds.Tables[0].Rows )
{
count++;
string bmid="";
string bmname=""; bmid=row["bmid"].ToString(); string department="select * from tab_zzjg where id='"+bmid+"'";
bmname=data1.readout(department,1); //读取部门名称 if(count ==1)
{
rDs=new DataSet();
System.Data.DataTable myTable=new DataTable();
myTable.TableName ="jxgl_gl";
myTable.Columns.Add("bmid",System.Type.GetType("System.String"));
myTable.Columns.Add("bmname",System.Type.GetType("System.String"));
rDs.Tables.Add(myTable);
}
DataRow myrow=rDs.Tables[0].NewRow() ;
myrow["bmid"]=bmid;
myrow["bmname"]=bmname;
rDs.Tables[0].Rows.Add(myrow);
} }
else
{
rDs=new DataSet();
System.Data.DataTable myTable=new DataTable();
myTable.TableName ="jxgl_gl";
myTable.Columns.Add("bmid",System.Type.GetType("System.String"));
myTable.Columns.Add("bmname",System.Type.GetType("System.String"));
rDs.Tables.Add(myTable); //填充数据
DataRow myrow=rDs.Tables[0].NewRow() ;
myrow["bmid"]="1";
myrow["bmname"]="--没有记录--";
rDs.Tables[0].Rows.Add(myrow); }
}
}
catch(Exception e)
{
rDs=null;
}
return rDs;
}
DataGrid,根據绑定列的值對新增列賦值。一個循環就可以解決了。
{
if(e.item.cell[i].Equals("1"))
{
e.item.cell[i+1].text = 'N'
}
else
{...}
}
方法2:在数据库端处理,
建议采用 zqsntws(轻松)兄的办法
TEXT='<%# DataBind.Eval(Container.DataItem,"字段").ToString()=="1"?"Y":"N"%>'
觉得这个方法好点,以前类似的贴子也是这样解答的.
这些东西最好放在前端处理.而且又方便.直接用SQL取值时就转换是可以,但用户需求一变呢?你又得去改了
private void StusUserInfoList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem))
{
bool isxy=Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem,"IsNeedKey"));
if(isxy==true)
{
e.Item.Cells[3].Text="Y.";
e.Item.Cells[3].BackColor=System.Drawing.Color.Tomato;
}
else
{
e.Item.Cells[3].Text="N.";
}
}
}