gpt4 book ai didi

c# - ASP.NET 转发器和 DataBinder.Eval

转载 作者:太空狗 更新时间:2023-10-29 22:02:12 25 4
gpt4 key购买 nike

我有一个 <asp:Repeater>在我的网页中,它绑定(bind)到以编程方式创建的数据集。

此转发器的目的是从 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) 手动转换为 String,我已经尝试了 ToString() 方法,我已经尝试了所有方法。

此外,如果在调试器中我添加了 DataBinder.Eval(Container.DataItem,"letter") 的监视,它返回的值是“A”,根据我的说法,这应该适用于文本属性。

编辑:

异常(exception)情况:

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 标签中,我不得不将其转换为 bool 值。问题是在Text标签处发出了异常信号,我不知道为什么

最佳答案

从您给出的示例来看,您不需要数据集,只需要数据表。此外,您没有指定列的数据类型。

DataTable indexTable = new DataTable();
indexTable.Columns.Add("letter", typeof(string));

//do stuff

_repeater.DataSource = indexTable;
_repeater.DataBind();

然后这样评价

Text='<%# Eval("letter")%>'

关于c# - ASP.NET 转发器和 DataBinder.Eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com