リピータ内に自分のユーザーコントロールがあります。リスト要素の評価に従って星を表示します。最初の縛りではすべてが大丈夫です、星の数は各項目で大丈夫です。次に、私はこのリストをフィルタリングするポストバックを行います。結果データはリピータにバインドされます。最初は、3つのフィルタリングの後に5つのエレメントがあったが、3つしか見えなかったが、星は結合前のように順番に並んでいると言うことができる。リピータ内のユーザーコントロール - ポストバック後も変更なし
私はポストバック中に、リピータ内の各コントロールを再作成し、適切な数の星を表示する必要があります(古いものではありません)。
私は間違っていますか?
リピーターは、updatePanel内にあります。
ここに私のコントロール "星" のコードです:
<span runat="server" id="starHolder" class="starsHolder" title="">
<input runat="server" id="star1" name="star3" type="radio" class="star1" value="1" />
<input runat="server" id="star2" name="star3" type="radio" class="star1" value="2" />
<input runat="server" id="star3" name="star3" type="radio" class="star1" value="3" />
<input runat="server" id="star4" name="star3" type="radio" class="star1" value="4"/>
<input runat="server" id="star5" name="star3" type="radio" class="star1" value="5"/>
</span>
、ここでは私のリピータのコードは次のとおりです。
<asp:Repeater EnableViewState="false" OnItemDataBound="RptrTopRated_OnDataItemBound" ID="rptrTopRated" runat="server">
<ItemTemplate>
<li class="topRated" id='<%#DataBinder.Eval(Container.DataItem, "[id]")%>'>
<p>
<%# DataBinder.Eval(Container.DataItem, "[title]") %>
</p>
<span class="ratingStar">
<cms:stars EnableViewState="false" runat="server" id="ctrlRating" McID='<%#System.Convert.ToInt32(DataBinder.Eval(Container.DataItem, "[id]"))%>' Mode="small"></cms:stars>
</span>
<a href="#" class="greenLink png" title="Leer más">Leer más</a>
</li>
</ItemTemplate>
</asp:Repeater>
がenableViewsstateがtrueに設定されている場合、それは問題ではありませんか偽です。チェックするには、選択し
protected void RptrTopRated_OnDataItemBound(object sender, RepeaterItemEventArgs e)
{
((stars)e.Item.FindControl("ctrlRating")).SetStarsRating();
}
attrbuteを持つべきかを入力決定する(「チェックする」):私もコードを設定リピータのItemBoundイベントで
public void SetStarsRating() {
int rate = GetRate();
this.starHolder.Attributes["title"] = McID.ToString();
if(star1.Attributes["checked"] != null) star1.Attributes.Remove("checked");
if(star2.Attributes["checked"] != null) star2.Attributes.Remove("checked");
if(star3.Attributes["checked"] != null) star3.Attributes.Remove("checked");
if(star4.Attributes["checked"] != null) star4.Attributes.Remove("checked");
if(star5.Attributes["checked"] != null) star5.Attributes.Remove("checked");
switch (rate)
{
case 1:
star1.Attributes["checked"] = "checked";
break;
case 2:
star2.Attributes["checked"] = "checked";
break;
case 3:
star3.Attributes["checked"] = "checked";
break;
case 4:
star4.Attributes["checked"] = "checked";
break;
case 5:
star5.Attributes["checked"] = "checked";
break;
}
}
私ができるデバッグ中そのコードが正しい方法で動作し、良い1つ星のchecked属性を設定しますが、レンダリングされたHTMLには結果はありません。
あなたのコードをしてください投稿。 –
UpdatePanelを削除してください –
私はあなたが深刻だとは思わない – gruber