1

いくつかのパネルを含むリピーターがあります。のonmouseover属性がないことに気づきました<asp:Panel>。page_loadを呼び出すことで、パネルに属性を追加できることを読みました。

PanelID.Attributes.Add("onmouseover", "Script to Run");

問題は、私がリピーターにいて、PanelIDがContentPlaceHolder_ctl01_myID_0のようにasp.netによって生成されるため、理解するのが難しいだけでなく、VS2010がそれを適切なオブジェクトとして認識せず、エラーをスローすることです。すべてのアイテムに添付する必要があるため、forまたはforeachを使用する必要がありますが、何を繰り返すかわかりません。のような方法はありますか

foreach(childcontrol in Repeater.ChildControlsISpecificallyNeedPossiblyIdentifiedBySomeID)
{
 childcontrol.Attributes.Add("onmouseover", "Script to Run");
}

Page_LoadイベントハンドラーのC#でこれを行うには?パネルでもクライアント側のonload、onmouseclick、onmouseoutを実行したいので、これらの属性もアタッチしたいと思います。

4

4 に答える 4

0

ItemDataBoundイベントの使用を検討できます。

protected void myRepeater_ItemDataBound(object source, RepeaterCommandEventArgs e) {   
    if(e.Item.ItemType == ListItemType.Item){
       Panel pnl = (Panel)e.Item.FindControl("myPanel");   
       pnl.Attributes.Add"onMouseOver", "yourFnctionName()");
    }
}
于 2011-02-16T10:45:21.807 に答える
0

パネルはdivクライアント側で表されます。を使用してクライアント側IDを取得できますSomePanel.ClientIDが、トリガーパネルを参照している場合thisは、JavaScriptでいつでも使用できます。

各要素にすべてのイベントハンドラーを配置するわけではありません

于 2011-02-16T10:30:35.997 に答える
0

ボックスの外側を考えると、ASP.NETを使用して-attributeをインラインで指定する代わりに、javascriptイベントリスナーをjavascriptにonmouseoverアタッチできます。

パネルにCSSクラスを与えます。

<asp:Panel CssClass="panel"></asp:Panel>

jQueryを使用すると、イベントハンドラーをバインドする構文は次のようになります。

$(".panel").mouseover(functionToRun);

jQueryを使用していない場合は、もう少しコードが必要になりますが、きっと理解できると思います。

于 2011-02-16T10:34:06.513 に答える
0

リピーターonitemdataboundのイベントでパネルに属性を追加し、その中でコントロールを見つけます。このイベントは、行がバインドされるたびに呼び出されるため、foreachを呼び出す必要はありません。

于 2011-02-16T10:35:05.580 に答える