我在转发器内部有一个UserControl,按以下方式编码:
ParentPage.aspx:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<uc1:MovieDetailPanel runat="server" myMovieID='<%# Eval("movieID") %>' myMovieName='<%# Eval("movieName") %>'
myMovieDescription='<%#Eval("movieDescription") %>' myMovieImagePath='<%# Eval("posterImage") %>'
myMovieYear ='<%# Eval("movieYear") %>' myMovieGenre ='<%# Eval("movieGenre") %>' myMovieAverageRating ='<%# Eval("movieRating") %>'
myMovieCountry ='<%# Eval("movieCountry") %>' myMovieLanguage ='<%# Eval("movieLanguage") %>'
id="MovieDetailPanel1" />
</ContentTemplate>
</ItemTemplate>
</asp:Repeater>
ParentPage.cs:
private void LoadMyControls()
{
Repeater1.DataSource = new Common().getMoviesList(selectedGenre, selectedYear, selectedPopularity, selectedLanguage, selectedCountry);
Repeater1.DataBind();
}
UserControl.cs:
public int myMovieID { get; set; }
public string myMovieName { get; set; }
public double myMovieAverageRating { get; set; }
//some more properties
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MovieRatingControl.Value = myMovieAverageRating ;
}
}
我的UserControl中有一个Telerik RadRating (ID# MovieRatingControl)
。在UserControl的页面加载中,我设置了评级控件的值,如同上传器从数据库传递(如果(!Page.IsPostBack)如上所示将其包装在里面。)因此每部电影都有自己的评级,如数据库中所示。
然而,在回发时(当我点击率按钮时),RadRating
控件失去其值并变为0.这发生在转发器内的所有UserControl上,而不仅仅是我点击了Rate的UserControl按钮。有人可以让我知道我应该如何保留这个评级值?我需要得到它并更新我的数据库表。
P.S:如果我不使用if (!Page.IsPostBack)
,我会保留DB中的值,但不保留用户设置的评级。问题是,用户设置的评级未得到维护。