【发布时间】:2012-11-29 14:54:15
【问题描述】:
我有以下标记:
<div class="section">
<p runat="server" id="sectionName"></p>
</div>
<div class="label">
<div class="activity-header">Activity</div>
<div class="status-header">Status</div>
<div class="comment-header">Comment</div>
</div>
<asp:Repeater ID="rptActivity" runat="server">
<ItemTemplate>
<div class="under-label">
<div class="activity">
<%#Eval("ActivityName")%>
<input type="hidden" name="activityId" value='<%#Eval("ActivityId")%>' />
</div>
<div class="status">
<asp:DropDownList ID="ddlStatuses" DataValueField="Id" DataTextField="Name" DataSourceID="SqlDataSource1" runat="server"></asp:DropDownList>
</div>
<div class="comment">
<textarea name="comments" cols="35" rows="3" name="comment" style="float: left; margin: 0px 0px 0px 25px; font-family: Geneva, Arial, Helvetica, sans-serif;"><%#Eval("Comment")%></textarea>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PhumafConnectionString %>" SelectCommand="SELECT * FROM [Status]">
</asp:SqlDataSource>
rptActivityRepeater的数据源是List,Helper定义如下:
public class Helper
{
public string ActivityName { get; set; }
public long ActivityId { get; set; }
public long StatusId { get; set; }
public string Comment { get; set; }
}
如您所见,我将相关字段绑定到实体的属性,并将所有 ddlStatuse 绑定到返回所有状态的数据源。但是,由于这是一个更新屏幕,我希望拥有之前选择的状态已选中,我通过 Helper 实体的道具 StatusId 获得了该 ID。
尝试将 ddlStatuses 的 SelectedValue 设置为 <%# Eval("StatusId") %>,但它引发了我只能从控件绑定的数据源调用 props 的异常。
基本上我有我需要在 ddlStatuses 中选择它们的 StatusIds。
我该怎么做?
编辑:
我忘了提到我想到的解决方案之一是将 List<Status> 作为一个属性包含在帮助程序类中,这样我就可以拥有 statusId 以及所有其他状态,但这不起作用如果我不能使用父母的数据源。
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# asp.net drop-down-menu