GridView和DataGrid显示 男 女

阳新互联 2009-05-14 05:46:45
想某一列 原本显示 “1” “0”的显示为 “男” “女”
方法1:使用dataGrid在ItemDataBound事件中倒是很容易实现这个功能

protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
//e.Item.Cells[4].Text = e.Item.Cells[4].Text.Trim() == "1" ? "是" : "否";
if (e.Item.Cells[3].Text.Trim() == "1")
e.Item.Cells[3].Text = "男";
else if (e.Item.Cells[3].Text.Trim() == "0")
e.Item.Cells[3].Text = "女";
}
}

但是在gridview如何实现,又论坛友人说在gridview的RowDataBound事件中写,但不知道具体怎么个搞法,
方法2:

<asp:TemplateColumn HeaderText="性别">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Sex").ToString()=="1"?"男":"女" %>' ID="Label1">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>

但是我的数据源是用hashtable生成的,不知道DataBinder.Eval(Container, "DataItem.Sex")如何获取sex

/// <summary>
/// 查询列表
/// </summary>
private void Query()
{
Hashtable queryItems = new Hashtable();
DataTable dt = Myweb.BusinessLogicLayer.Worker.Query(queryItems);
DataGrid1.DataSource = dt;
DataGrid1.DataBind();
}


/// <summary>
/// 根据查询条件哈希表,查询数据
/// </summary>
/// <param name="queryItems">查询条件哈希表</param>
/// <returns>查询结果数据DataTable</returns>
public static DataTable Query(Hashtable queryItems)
{
string where = SqlStringConstructor.GetConditionClause(queryItems);
string sql = "select * from View_worker where WorkerDept=1";
Database db = new Database();
return db.GetDataTable(sql);
}


方法三:在语句上更改,我用的是视图,提示说无法构造case语句

SELECT
列1,
列2,
CASE sex
WHEN '1' THEN '男'
WHEN '0' THEN '女'
END AS sex
from 表


哪个兄台能给个例子,或者帮忙解决下一个问题
我的datagrid中有复选框,我要获取复选框选中的状态

/// <summary>
/// 得到用户的选择
/// </summary>
/// <returns>用户选择图书的编号集合</returns>
private ArrayList GetSelected()
{
ArrayList selectedItems = new ArrayList();
foreach (DataGridRow row in DataGrid1.Rows)
{
if (((CheckBox)row.FindControl("chkSelected")).Checked)
{
selectedItems.Add(Convert.ToInt32(row.Cells[1].Text));
}
}
return selectedItems;
}


如果是使用GridView这种写法就可以,但是DataGird没有DataGridRow这个属性,应该怎么写
...全文
165 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangkun520 2009-05-16
  • 打赏
  • 举报
回复
你不是对gridview进行绑定了吗~!DataBinder就是数据源~!
阳新互联 2009-05-14
  • 打赏
  • 举报
回复
数据源是用的HashTable生成绑定的,所以我想知道 下面这个字段的值是怎么传递过来的
<asp:Label ID="Label1" runat="server" Text=' <%# Convert.ToInt32(DataBinder.Eval(Container.DataItem,"字段名"))==0 ? "男" : "女" %>'> </asp:Label>
Kimm2009 2009-05-14
  • 打赏
  • 举报
回复
直接遍历DataTable修改,然后再绑定DataTable或DataView。
我姓区不姓区 2009-05-14
  • 打赏
  • 举报
回复
你到底是用HashTable还是DataTable?
wuyq11 2009-05-14
  • 打赏
  • 举报
回复
方法都有了,还有
<asp:TemplateField HeaderText="员工性别">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# ddlbind()%>' DataValueField="员工性别" DataTextField="员工性别">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
参考
wangkun520 2009-05-14
  • 打赏
  • 举报
回复
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="id" />
<asp:BoundField DataField="name" />
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Convert.ToInt32(DataBinder.Eval(Container.DataItem,"字段名"))==0 ? "男" : "女" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
最简单的办法~!
blestcc 2009-05-14
  • 打赏
  • 举报
回复
case不行用replace
blestcc 2009-05-14
  • 打赏
  • 举报
回复
case不行用replace
正宗熊猫哥 2009-05-14
  • 打赏
  • 举报
回复
VS2005的gridview与VS2003的DATAGRID差不多的。如果SQL中处理不了就在绑定事件中去做。一样的
Neil198 2009-05-14
  • 打赏
  • 举报
回复
你方法2不是已经能解决了么?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧