我在网页中有一个<asp:Repeater>
,它绑定了一个程序创建的数据集。
这个重复器的目的是创建一个从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;
}
然而,当我运行页面时,在中抛出了一个“指定的转换无效异常”。我不知道为什么,我尝试使用(String)手动进行强制转换为字符串,我尝试了ToString()方法,我尝试了所有方法。
另外,如果在调试器中添加一个DataBinder.Eval(Container.DataItem,“letter”)的监视器,它返回的值是“A”,根据我的理解,应该对Text属性没有问题。
编辑:
以下是异常:
System.InvalidCastException was unhandled by user code Message="Specified cast is not valid." Source="App_Web_cmu9mtyc" StackTrace: at ASP.savecondition_aspx.__DataBinding__control7(Object sender, EventArgs e) in e:\Documents and Settings\Fernando\My Documents\Visual Studio 2008\Projects\mediTrack\mediTrack\saveCondition.aspx:line 45 at System.Web.UI.Control.OnDataBinding(EventArgs e) at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.Control.DataBindChildren() InnerException:
任何建议将不胜感激,谢谢。
编辑2: 已修复!问题不在Text或CSS标签中,而在Enabled标签中,我必须将其转换为布尔值。问题是异常在Text标签处被信号化,我不知道为什么