Repeater中的用户控件 - PostBack上丢失的值 - RadRating

时间:2013-11-23 17:51:18

标签: asp.net user-controls telerik postback repeater

我在转发器内部有一个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中的值,但不保留用户设置的评级。问题是,用户设置的评级未得到维护。

0 个答案:

没有答案