我在我的网页中有一个<asp:Repeater>
,它绑定到编程创建的数据集。ASP.NET中继器和DataBinder.Eval
这个转发器的目的是从A-Z创建一个索引,当点击它时刷新页面上的信息。
的中继器具有像一个链接按钮,以便:
<asp:LinkButton ID="indexLetter" Text='<%#DataBinder.Eval(Container.DataItem,"letter")%>'
runat="server" CssClass='<%#DataBinder.Eval(Container.DataItem, "cssclass")%>'
Enabled='<%#DataBinder.Eval(Container.DataItem,"enabled")%>'></asp:LinkButton>
数据集创建方式如下:
protected DataSet getIndex(String index)
{
DataSet ds = new DataSet();
ds.Tables.Add("index");
ds.Tables["index"].Columns.Add("letter");
ds.Tables["index"].Columns.Add("cssclass");
ds.Tables["index"].Columns.Add("enabled");
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for (char i = alphaStart; i <= alphaEnd; i++)
{
String cssclass="", enabled="true";
if (index == i.ToString())
{
cssclass = "selected";
enabled = "false";
}
ds.Tables["index"].Rows.Add(new Object[3] {i.ToString(),cssclass,enabled });
}
return ds;
}
然而,当我运行该页面中,“指定的转换无效异常“引发Text='<%#DataBinder.Eval(Container.DataItem,"letter")'
。我不知道为什么,我已经尝试手动将字符串转换为(String),我尝试了一个ToString()方法,我试过了所有的东西。
此外,如果在调试器中为DataBinder.Eval(Container.DataItem,“letter”)添加一个监视,则它返回的值为“A”,根据我的说法,该文本属性应该没问题。
编辑:
这里是例外:
System.InvalidCastException了未处理由用户代码
消息= “指定的转换无效”。来源= “App_Web_cmu9mtyc”
堆栈跟踪: 在ASP.savecondition_aspx .__ DataBinding__control7(对象发件人,EventArgs e)在E:\的Documents and Settings \费尔南多\我 文档\ Visual Studio的 2008 \项目\ mediTrack \ mediTrack \ saveCondition。 ASPX:线45 在System.Web.UI.Control.OnDataBinding(EventArgs的) 在System.Web.UI.Control.DataBind(布尔raiseOnDataBinding) 在System.Web.UI.Control.DataBind() 在系统.Web.UI.Control.DataBindChildren()InnerException:
任何意见将不胜感激,谢谢编号2: 固定!问题不在Text或CSS标签中,但在Enabled标签中,我必须将其转换为布尔值。问题是,这个例外是在文本标签信号,我不知道为什么
你一定的例外是“信”,而不是“启用”的一部分? – 2009-11-04 19:14:46
你是对的zarembisty!就是这样,我从来没有尝试从启用的属性中移除Eval ......谢谢! – Fernando 2009-11-04 19:47:58
我希望MS永远不会绑定到页面中。如果你只能通过代码隐藏来避免这些问题,那会更好。 – Phill 2011-07-25 00:18:55