我在中繼器內部有一個UserControl。中繼器的數據源來自SQL Server。中繼器內的用戶控制
用戶控制的的.cs - MoviePanel.ascx.cs:
public int myMovieID { get; set; }
public string myMovieName { get; set; }
public string myMovieDescription { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
MovieIDLbl.Text = myMovieID.ToString();
MovieNameLbl.Text = myMovieName;
DescriptionLbl.Text = myMovieDescription;
}
ASPX頁面:
<asp:Repeater ID="Repeater1" DataSourceID="ListOfMoviesDS" runat="server">
<ItemTemplate>
<uc1:MovieDetailPanel runat="server" myMovieID='<%# Eval("MovieID") %>'
myMovieName='<%# Eval("movieName") %>'
myMovieDescription='<%# Eval("movieDescription") %>'
id="MovieDetailPanel1" />
<asp:Label ID="Label1" runat="server"
Text='<%# Eval("MovieID") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Eval("movieName") %>'></asp:Label>
<asp:Label ID="Label3" runat="server"
Text='<%# Eval("movieDescription") %>'></asp:Label>
</ItemTemplate>
</asp:Repeater>
這裏的東西很奇怪的事情發生。值不傳遞給UserControl。但是,如果我將標籤放在usercontrol下面,並使用設置文本,它就可以工作。您可能會認爲用戶控件可能是問題所在。但是,如果我手動鍵入某些內容,請將其替換爲<%# Eval("movieName") %>
,它會傳遞給用戶控件並顯示出來。
我沒有CLUE!如果問題出在Eval()上,標籤也不應該獲取文本。或者,如果問題出在UserControl上,我的手冊文本不應該被傳遞。我不知道爲什麼Eval()的值沒有達到UserControl。
可否請你讓我知道我應該如何傳遞值從後面的代碼在用戶控件?我可以分配轉發器的數據源,但數據源的值是如何傳遞給usercontrol的? – user1220169
與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) –
在頁面生命週期的哪一點你檢查是否設置了值?你正在使用數據綁定表達式,所以這些將在'DataBinding'階段被設置。 –