2012-12-12 14 views
4

我有以下的加價:子控件可以使用父類的數據源嗎?

<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直放站的數據源是列表和助手定義如下:

public class Helper 
{ 
    public string ActivityName { get; set; } 
    public long ActivityId { get; set; } 
    public long StatusId { get; set; } 
    public string Comment { get; set; } 
} 

正如你可以看到我綁定相關領域該實體的屬性並將所有ddlStatuses綁定到返回所有狀態的數據源。但是,由於這是一個更新屏幕,我希望選擇之前選擇的狀態,並且通過幫助器的PropIdStateId擁有該Id實體。

嘗試將ddlStatuses的SelectedValue設置爲<%# Eval("StatusId") %>,但它引發了一個異常,我只能從綁定該控件的數據源調用props。

基本上我有StatusIds我需要讓他們在ddlStatuses中選擇。

我該怎麼做?

編輯:

我忘了提及的是,解決方案我腦子裏想的是包括List<Status>作爲輔助類的屬性,這樣我將有statusId以及所有其他的一種狀態,但是如果我不能使用父級的數據源,這將不起作用。

+0

我編輯了自己的冠軍。請參見「[應的問題包括‘標籤’,在他們的頭銜?(http://meta.stackexchange.com/questions/19190/)」,這裏的共識是「不,他們不應該」。 –

回答

0
+0

感謝您花時間幫助我解決這個問題。我不太確定這有什麼用處?我應該在中繼器的OnItemCreated事件中做什麼?我可以通過EventArgs訪問哪些數據? – Dragan

+0

'(Helper)e.Item.DataItem'會給你潛在的源代碼。然後使用'DropDownList ddl =(DropDownList)FindControl(「ddlStatuses」)'並在這裏選擇相關值。我沒有測試這個,但應該工作,讓我知道如果你有問題 –

+0

由於一些奇怪的原因,它不會找到ddlStatuses。我使用DropDownList ddl =(DropDownList)FindControl(「ddlStatuses」); 第50行:ddl.SelectedValue = helper.StatusId.ToString();我得到空行指針異常第50行..它不會找到ddl – Dragan

相關問題