首页 新闻 会员 周边 捐助

动态控件绑定数据问题。。

0
悬赏园豆:100 [已关闭问题]

各们DX,小弟有个问题请教。

大家都知道在ASP.NET中有个ParseControl方法可以HTML将字符串类型转换成web控件,HTML代码是:<asp:Label ID="Label1" runat="server">数据列表</asp:Label><asp:objectDataSource ID="objectDataSource1" runat="server"></asp:objectDataSource><asp:Repeater ID="Repeater1" runat="server" DataSourceID="objectDataSource1"><ItemTemplate><div><%#Eval("FName")%></div></ItemTemplate></asp:Repeater>

但是我要在转换后绑定数据进去时,出现异常如:Cannot instantiate type 'DataBoundLiteralControl' because there is no public parameterless constructor.

为什么在绑定<%#Eval("FName")%>时出错呢?

micenter的主页 micenter | 初学一级 | 园豆:162
提问于:2008-09-19 09:19
< >
分享
其他回答(2)
0

ObjectDataSource的select方法里面有“FName”字段么 ?

wind hong | 园豆:211 (菜鸟二级) | 2008-09-19 09:34
0

我引用你的代码,自行完整了ObjectDataSource,运行正常。我想,是不是你的环境存在问题,造成 asp:Repeater 控件无法正常使用。楼上的,不是字段的原因,属性错误,抛出的意外消息不是这样的

 

Test
<asp:ObjectDataSource ID="objectDataSource1" runat="server" SelectMethod="Test" TypeName="UsersManager">asp:ObjectDataSource>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="objectDataSource1">
<ItemTemplate>
<div><%#Eval("FName")%>
div>
ItemTemplate>
asp:Repeater>

public class UsersManager {

private UsersManager() {
}

public static DataTable Test() {
DataTable dt
= new DataTable();
dt.Columns.Add(
"FName");
for (int i = 0; i < 10; i++) {
dt.Rows.Add(i.ToString());
}
return dt;
}
}

     补充一下:没用过 ParseControl(甚至不知道这是方法还是工具),或许你的问题出在你使用的工具(或方法)上,而非目标显示控件本身的问题。是不是你的工具打乱了控件自身的生存周期?


以下摘自 http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104611

    Generally, the ParseControl API never causes compilation, and hence doesn't have the ability to handle any code, and completely ignores code blocks (<% ... %> and <%= ... %>). It is supposed to also ignore <%# ... %> blocks, but instead fails due to bad error handling. But in any case, it wouldn't do what you want.

    通过上面以及原文的叙述,或许你的这个问题还不好解决呢,大概要改变你的实现逻辑了。通常我用到动态控件时都是通过 compsitecontrol 绑定某个 xmlstring ,而在 createchildren() 时进行显示创建,而没用过 parsecontrol 这类。

    可查阅的资料或可借鉴的案例太少,估计这才是你最大的困难所在吧。

陛下 | 园豆:3938 (老鸟四级) | 2008-09-19 09:52
0

一、如你还要再对FName的值做转换的话,你可以在Repeater的ItemDataBound事件中对FName字段进行转换。二、以上异常信息应该是你的objectdatasource设定存在问题点型配置如下

1.首先我们要在app_code下添加一个提供数据源的class我们假定它为employee

2.设定ObjectDataSource 如下

 

Code

具体可以参看MSDN的ObjectDataSource详细使用.熟悉了ObjectDataSource的使用这个问题,就迎韧而解了。

加冰的可乐 | 园豆:410 (菜鸟二级) | 2008-09-19 10:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册