急!DataGrid模板列的奇怪数据绑定!!!请大家帮忙想想办法。

squallqiu 2005-12-13 11:15:35
使用DataGrid的模板列绑定一数据。代码如下:
<asp:TemplateColumn HeaderText="状态">
<ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.status.name") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList id="DropDownList1" runat="server" Width="78px"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
问题在<%# DataBinder.Eval(Container, "DataItem.status.name") %>中的绑定的数据列名为“status.name”可是在绑定时,无法以列名“status.name”绑定数据,而是以“status”绑定,结果就出错。因为DataSet.Tables[].Rows[]["status.name"],该列名由数据层决定,由于业务逻辑关系不能修改。
如果使用绑定列就是正常的,如下:
<asp:BoundColumn DataField="status.name" HeaderText="状态">
<HeaderStyle Wrap="False"></HeaderStyle>
</asp:BoundColumn>
初步判断,为"DataItem.status.name"错误,其中数据列名中无法使用点标点“.”。但不知道如何解决。希望大家帮帮忙。谢谢。
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
squallqiu 2005-12-13
  • 打赏
  • 举报
回复
=================================
回复人: vivianfdlpw() ( ) 信誉:100 2005-12-13 11:28:00 得分: 0
try
<%# DataBinder.Eval(Container.DataItem, "status.name") %>
=================================
这个不行,一样的错误。
DataBinder.Eval:“System.Data.DataRowView”不包含名称为 status 的属性。

不爽的是,系统设计的时候就把数据层封掉了。DataBind使用了一个通用的类实现,所以现在也无法使用列映射。不过给我了点启发。
还是很感谢你!就此结贴,给分呵。
vivianfdlpw 2005-12-13
  • 打赏
  • 举报
回复
也可以利用列映射来使用与数据源不同的列名

SqlDataAdapter d=new SqlDataAdapter ();
System.Data.Common.DataTableMapping dtm=new System.Data.Common.DataTableMapping ();
dtm.ColumnMappings.Add ("status.name","statusName");
d.TableMappings.Add (dtm);
vivianfdlpw 2005-12-13
  • 打赏
  • 举报
回复
try

<%# DataBinder.Eval(Container.DataItem, "status.name") %>
squallqiu 2005-12-13
  • 打赏
  • 举报
回复
有想过修改DataSet的列名,但不知道怎么做.

62,074

社区成员

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

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

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

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