DetailsView中BoundField的取值问题

震我一下巧克力 2009-04-26 01:08:08

<asp:DetailsView ID="dvUser" runat="server" Height="50px" Width="329px" AutoGenerateRows="False" DataSourceID="odsUser" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" OnItemCommand="dvUser_ItemCommand" DefaultMode="Edit">
<Fields>
<asp:BoundField DataField="UserId" HeaderText="UserId" SortExpression="UserId" Visible="False" />
<asp:BoundField DataField="LoginId" HeaderText="登录账号" ReadOnly="True" SortExpression="LoginId" />
<asp:BoundField DataField="Name" HeaderText="姓名" SortExpression="Name" />
<asp:BoundField DataField="Address" HeaderText="地址" SortExpression="Address" />
<asp:BoundField DataField="Phone" HeaderText="电话" SortExpression="Phone" />
<asp:BoundField DataField="Mail" HeaderText="电子信箱" SortExpression="Mail" />
</Fields>
</asp:DetailsView>

DetailsView 绑定了一个对象数据源 DefaultMode设置为Edit

在点击按钮后,我想获得每一个BoundField的值

user.Name = dvUser.Rows[2].Cells[1].Text;
user.Address = dvUser.Rows[3].Cells[1].Text;
user.Phone = dvUser.Rows[4].Cells[1].Text;
user.Mail = dvUser.Rows[5].Cells[1].Text;

但是拿到的都是空值或空字符串

如果

user.Name = dvUser.Rows[2].Cells[0].Text;
user.Address = dvUser.Rows[3].Cells[0].Text;
user.Phone = dvUser.Rows[4].Cells[0].Text;
user.Mail = dvUser.Rows[5].Cells[0].Text;

拿到的都是“姓名”“地址”“电话”“电子信箱”这些标题

怎样拿到BoundField中的值?我这个问题是什么原因?

当我把DefaultMode设置为Edit时,我的DetailsView的背景都成被选中时的蓝色了,怎么避免这个情况?
...全文
1696 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cara69 2011-11-05
  • 打赏
  • 举报
回复
我也想实现这个功能,还是没思路
kswangxing 2011-10-26
  • 打赏
  • 举报
回复
学习了 刚用到了 谢谢
hyy461343347 2010-06-08
  • 打赏
  • 举报
回复
学习了
tanhaiqiu1983 2010-03-05
  • 打赏
  • 举报
回复
不错,这个方法行得通,谢了!
hailiang31011 2009-12-09
  • 打赏
  • 举报
回复
学 习学习
皓月明 2009-04-27
  • 打赏
  • 举报
回复
自己百度去,或google去
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhanglei_love2008 的回复:]
user.Name = ((TextBox)dvUser.Rows[2].Cells[0].Controls[0]).Text;
user.Address = ((TextBox)dvUser.Rows[2].Cells[1].Controls[0]).Text;
user.Phone = ((TextBox)dvUser.Rows[2].Cells[2].Controls[0]).Text;
user.Mail = ((TextBox)dvUser.Rows[2].Cells[3].Controls[0]).Text;

[/Quote]

应该是这样
[Quote=引用 15 楼 zhanglei_love2008 的回复:]
user.Name = ((TextBox)dvUser.Rows[2].Cells[0].Controls[1]).Text;
user.Address = ((TextBox)dvUser.Rows[3].Cells[1].Controls[1]).Text;
user.Phone = ((TextBox)dvUser.Rows[4].Cells[2].Controls[1]).Text;
user.Mail = ((TextBox)dvUser.Rows[5].Cells[3].Controls[1]).Text;
[/Quote]
感谢每一个帮助我的人
  • 打赏
  • 举报
回复
谢谢zsuswy提供的思路
makun0624 2009-04-27
  • 打赏
  • 举报
回复
关注`学习`UP
中年秃头大叔 2009-04-27
  • 打赏
  • 举报
回复
user.Name = ((TextBox)dvUser.Rows[2].Cells[0].Controls[0]).Text;
user.Address = ((TextBox)dvUser.Rows[2].Cells[1].Controls[0]).Text;
user.Phone = ((TextBox)dvUser.Rows[2].Cells[2].Controls[0]).Text;
user.Mail = ((TextBox)dvUser.Rows[2].Cells[3].Controls[0]).Text;
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 mingmingsuper 的回复:]
自己百度去,或google去
[/Quote]
搜出结果来我给你300分
  • 打赏
  • 举报
回复
那些都没有ID,怎么找他们...
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zsuswy 的回复:]
user.Name = dvUser.Rows[2].Cells[0].Text;是不行的

遍历一下dvUser.Rows[2].Cells[0].Controls,Cell里面的控件中去拿文本。

因为文本并不是直接放在Cell里面的,在Cell里面,asp.net 会自动生成一些,例如span,来放这些文本值。
[/Quote]
<asp:BoundField DataField="UserId" HeaderText="UserId" SortExpression="UserId" Visible="False" />
<asp:BoundField DataField="LoginId" HeaderText="登录账号" ReadOnly="True" SortExpression="LoginId" />
<asp:BoundField DataField="Name" HeaderText="姓名" SortExpression="Name" />
<asp:BoundField DataField="Address" HeaderText="地址" SortExpression="Address" />
<asp:BoundField DataField="Phone" HeaderText="电话" SortExpression="Phone" />
<asp:BoundField DataField="Mail" HeaderText="电子信箱" SortExpression="Mail" />
zsuswy 2009-04-26
  • 打赏
  • 举报
回复
user.Name = dvUser.Rows[2].Cells[0].Text;是不行的

遍历一下dvUser.Rows[2].Cells[0].Controls,Cell里面的控件中去拿文本。

因为文本并不是直接放在Cell里面的,在Cell里面,asp.net 会自动生成一些,例如span,来放这些文本值。
saisky 2009-04-26
  • 打赏
  • 举报
回复
顶下吧
DetailsView 这个控件好久没了,不太喜欢用这些控件
自定义输出有时舒服很多
wym0807 2009-04-26
  • 打赏
  • 举报
回复
up !!
gongsun 2009-04-26
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 namhyuk 的回复:]
而且我认为在asp.net 2.0下,这种简单的从DetailsView编辑模式获取值,然后赋值给某个对象的属性,完全可以用ObjectDataSource来配合。
[/Quote]
我要拿到还有DropDownList的值,最终要生成一个对象传递下去
namhyuk 2009-04-26
  • 打赏
  • 举报
回复
而且我认为在asp.net 2.0下,这种简单的从DetailsView编辑模式获取值,然后赋值给某个对象的属性,完全可以用ObjectDataSource来配合。

  • 打赏
  • 举报
回复
[Quote=引用 3 楼 namhyuk 的回复:]
我一时想不出别的办法。要不你把所有要取值得BoundFiled都转换成TemplateFiled,然后通过DetailsView.FindControl("控件ID")来获得控件。
[/Quote]
这种方法没问题,但是我现在就想拿到BoundField的值
加载更多回复(3)

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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