次のマークアップがあります。
<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>
rptActivity Repeater のデータソースは 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; }
}
ご覧のとおり、関連するフィールドをエンティティのプロパティにバインドし、すべての ddlStatuses をすべてのステータスを返すデータソースにバインドしています。ただし、これは更新画面であるため、以前に選択したステータスを選択し、 Helper エンティティの prop StatusId を通じてその ID を取得しています。
ddlStatuses の SelectedValue を に設定しようとしまし<%# Eval("StatusId") %>
たが、コントロールがバインドされているデータソースからしか props を呼び出すことができないという例外がスローされました。
基本的に、ddlStatuses で選択するために必要な StatusIds があります。
どうやってやるの?
編集:
私が念頭に置いていた解決策の1つはList<Status>
、ヘルパークラスにプロパティとして含めることであることに言及するのを忘れていました。そうすれば、statusIdと他のすべてのステータスを取得できますが、親のデータソース。