Dar*_*ren 2 asp.net repeater datasource
这是我的转发器的aspx:
<asp:Repeater ID="rpt_Files" runat="server">
<HeaderTemplate>
<th><asp:Label runat="server" ID="lbl_FileNameHeader" Text="File Name" /></th>
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" ID="lbl_FileName" Text='<%# Eval("JobFileNames") %>' />
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
以下是在C#中绑定数据的代码:
rpt_Files.DataSource = CurrentQuote;
rpt_Files.DataBind();
Run Code Online (Sandbox Code Playgroud)
这是CurrentQuote的类定义:
public class CurrentQuote
{
// Properties
private List<string> _jobfilenames;
public List<string> JobFileNames
{
get
{
if (_jobfilenames != null)
return _jobfilenames;
else
{
_jobfilenames = new List<string>();
return _jobfilenames;
}
}
set { _jobfilenames = value; }
}
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
An invalid data source is being used for rpt_Files. A valid data source must implement either IListSource or IEnumerable.
Run Code Online (Sandbox Code Playgroud)
如果我将转发器数据源更改为CurrentQuote.JobFileNames,则会收到一条错误,指出该字符串没有名为"JobFileNames"的属性.
如果您有一个包含多个文件的引用,那么您的DataSource应该如下所示:
CurrentQuote cq = new CurrentQuote();
string[] filenames = new string[] { "file1", "file2", "file3" };
cq.JobFileNames = filenames.ToList();
rpt_Files.DataSource = cq.JobFileNames;
rpt_Files.DataBind();
Run Code Online (Sandbox Code Playgroud)
然后在标记中你可以使用:
<asp:Label runat="server" ID="lbl_FileName" Text='<%# Container.DataItem %>' />
Run Code Online (Sandbox Code Playgroud)
所以是的"有可能让asp.net转发器的数据源成为类的属性列表",但是您应该首先实例化该类,并且从标记开始,您必须直接访问DataItem,因为它是一个字符串.
| 归档时间: |
|
| 查看次数: |
4451 次 |
| 最近记录: |