首先,如果之前有人问过,我道歉。我一直在寻找答案,似乎空白了。我很可能使用错误的关键字。我是ASP.NET和C#的完整nubie,因此不能完全确定要搜索的内容。
我想要的是使用SQL表中的条件匹配动态生成的部分。因此,来自具有ID的表的标头,然后是与该ID匹配的不同表中的所有列表项。
标记可能看起来像:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<% if (Eval("ID") == 1)
{ %>
<div class="item_head">
Bartender Roles:
<ul>
<li>Serve Drinks</li>
<li>Clean Glasses</li>
<li>Prepare Garnish</li>
</ul>
</div>
<% }
if (Eval("ID") == 2)
{%>
<div class="item_head">
Kitchen Porter:
<ul>
<li>Stack Dishwasher</li>
<li>Keep fridges stocked</li>
</ul>
</div>
<%}
if (Eval("ID") == 3)
{%>
<div class="item_head">
Chef:
<ul>
<li>Prepare food</li>
<li>Keep fridges stocked</li>
<li>Rotate stock</li>
</ul>
</div>
<%} %>
</ItemTemplate>
</asp:Repeater>
来自表A的标题(调酒师角色等)和来自表B的角色列表。
我认为最好用的是Repeater,也许可以从后面的代码中生成标签?但那之后我有点迷失了。
任何人都可以提供的任何帮助或建议将不胜感激。 如果这是一个重复的问题或完全简单的荒谬,再次道歉。
答案 0 :(得分:0)
保持用户界面尽可能简单并将业务逻辑保留在服务器上通常是一个好主意。
您可以使用ObjectDataSource
代替SqlDataSource1
。
这样您就可以在服务器上定义Role
模型。
类似的东西:
public class Role
{
public string Name {get;set;}
public List<string> Responsibilities {get;set;}
}
填写服务器上的角色列表,并在UI中枚举该列表。
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<div class="item_head">
<%# DataBinder.Eval(Container.DataItem, "Name") %> :
<ul>
<li><%# DataBinder.Eval(Container.DataItem, "Responsibilities") %></li> //you'll probably need another `Repeater` here
</ul>
</div>
</ItemTemplate>
</asp:Repeater>
以下是一篇文章的Link,以帮助您入门