2011-12-19 11 views
0

DashboardPageオブジェクトのコレクションにバインドされた次のリピータコントロールがあります。 DashboardPageのプロパティは次のとおりです。名前、ページ番号オブジェクトのプロパティへのコントロールのIDプロパティのバインド

<asp:Repeater ID="reportPages" runat="server">   
     <ItemTemplate> 
     <asp:ImageButton runat="server" onclick="ImageButton_Click" 
     ImageUrl="<%# GetImagePath(Container.DataItem) %>" 
     onmouseover="<%# GetMouseOverEventString(Container.DataItem) %>" 
     onmouseout="<%# GetMouseOutEventString(Container.DataItem) %>" 
     /> 
     </ItemTemplate> 

     <SeparatorTemplate> 
     &nbsp;&nbsp; 
     </SeparatorTemplate> 
    </asp:Repeater> 

私は、DashboardPageオブジェクトのプロパティに名前を付けるために、この

ID="<%# Eval('Name') %>" 

ような何かをのImageButtonのIDプロパティをバインドしたい。しかし、例外がスローされます。

コントロールのIDプロパティことができますタグ内のID属性と単純な値を使用してのみ設定できます。

イメージのIDプロパティを使用してイメージを変更するクライアントサイドスクリプトがあるため、イメージのIDプロパティが必要です。これを回避する方法はありますか?返信用

おかげ

よろしく Gagik Kyurkchyan

+0

理由のCssClassやクラスまたはカスタムを使用していないなぜあなたはあなたのイメージボタン – BizApps

+0

にID = YourIMageIDを持っていないということですIDの代わりに属性、注:リピーターアイテムのIDを使用している場合、IDにはコンテナのID +レベルの下にアンダースコアが付加されます。 – jerjer

+0

g databind#、あなたは=を使用しようとしましたか? <%=評価( '名前')%> – TheGeekYouNeed

答えて

1

あなたが動的にJavaScriptを使用して画像を参照する別の方法を見つける必要があるサーバーコントロールのIDを設定することはできません発見したので。私が考えることができる3つの方法があります:

  1. コントロールのCssClassプロパティを設定し、代わりにそれを使用します。 DOMを使用したIDではなくクラス別のコントロールを見つけるのは少し非効率ですが、現実世界ではおそらく無視できます。

  2. 画像を標準DIVにラップします。コンテナIDをDIVに設定します。その後、$("#divid img")...

  3. は(なしrunat="server"付き)標準<img>タグではなくasp:Imageコントロールを使用して行くためにjQueryのようなものを使用することができます。その後、問題なくIDを設定することができます。

+0

答えをありがとう! – kyurkchyan

0

IDを設定するには、ItemDataBoundを使用できます。

分離コード:

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    var textbox = e.Item.FindControl("myTextBox"); 
    textbox.ID = "myTextBox" + (e.name).toString(); /*ToString() method can be unnecessary in some cases.*/ 
} 

リピータ:

<asp:Repeater ID="myRepeater" runat="server" OnItemDataBound="BehaviorCustomizeRepeater_ItemDataBound"> 
/*other stuffs*/ 
</asp:Repeater> 
関連する問題