是否可以将asp.net中继器的数据源设置为列表<;字符串>;这是一个类的属性吗?
这是我的中继器的aspx:是否可以将asp.net中继器的数据源设置为列表<;字符串>;这是一个类的属性吗?,asp.net,repeater,datasource,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>
<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>
下面是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; }
}
如果我将repeaters数据源更改为CurrentQuote.JobFileNames,我会收到一个错误,指出字符串没有名为“JobFileNames”的属性。您应该将数据源分配给如下对象列表:
List<CurrentQuote> myCurrentQuoteList = new List<CurrentQuote>();
CurrentQuote currentQuoteObj = new CurrentQuote();
currentQuoteObj.JobFileNames.Add("test");
myCurrentQuoteList.Add(myCurrentQuoteList );
rpt_Files.DataSource = myCurrentQuoteList;
rpt_Files.DataBind();
CurrentQuote cq = new CurrentQuote();
string[] filenames = new string[] { "file1", "file2", "file3" };
cq.JobFileNames = filenames.ToList();
rpt_Files.DataSource = cq.JobFileNames;
rpt_Files.DataBind();
List myCurrentQuoteList=new List();
CurrentQuote currentQuoteObj=新的CurrentQuote();
currentQuoteObj.JobFileNames.Add(“测试”);
myCurrentQuoteList.Add(myCurrentQuoteList);
rpt_Files.DataSource=myCurrentQuoteList;
rpt_Files.DataBind();
不能直接分配类对象,应实现IListSource或IEnumerable作为数据源。如果一个引号包含多个文件,则数据源应如下所示:
List<CurrentQuote> myCurrentQuoteList = new List<CurrentQuote>();
CurrentQuote currentQuoteObj = new CurrentQuote();
currentQuoteObj.JobFileNames.Add("test");
myCurrentQuoteList.Add(myCurrentQuoteList );
rpt_Files.DataSource = myCurrentQuoteList;
rpt_Files.DataBind();
CurrentQuote cq = new CurrentQuote();
string[] filenames = new string[] { "file1", "file2", "file3" };
cq.JobFileNames = filenames.ToList();
rpt_Files.DataSource = cq.JobFileNames;
rpt_Files.DataBind();
然后在标记中可以使用:
<asp:Label runat="server" ID="lbl_FileName" Text='<%# Container.DataItem %>' />
因此,是的“asp.net中继器的数据源可以是一个类属性的列表”,但您应该首先实例化该类,并从标记中直接访问DataItem,因为它是一个字符串。没有.SingleItemDataSource很糟糕