我有一个webform,可以在其中动态加载Web用户控件。在Web用户控件内是转发器控件,在转发器控件中,我对每个重复项都有一个ajaxtoolkit评级控件,并且可以根据需要在其中自动动态创建Web用户控件。要处理所选评级,我必须使用 BehaviorID 以及以下代码:
<script type="text/javascript">
function pageLoad() { $find("ratingControlBehavior").add_EndClientCallback(onClientCallBack); }
function onClientCallBack(sender, eventArgs) {
var htmlname = sender._callbackID.substring(0, sender._callbackID.lastIndexOf('$')) + '_hdrating';
htmlname = htmlname.replace(/\$/g, '_')
var hdctl = document.getElementById(htmlname);
hdctl.value = eventArgs.get_CallbackResult();
}
</script>
问题是,当表格上一次有多个评级控制时,只有第一个评级控制工作,其他评级被禁用。如果我取出BehaviorID,那么一切正常。
我的问题是,我如何为多个BehaviorID以及每个的脚本编写代码,因为我需要为每个评级控件提供这些项目?
答案 0 :(得分:0)
这是通过以下方式完成的:
String scriptText = "";
scriptText += "function pageLoad(){";
foreach ( group.category.point item in tpnts )
{ scriptText += " $find('ratingControlBehavior" + item.eval_id + "').add_EndClientCallback(onClientCallBack);"; }
scriptText += "}";
ClientScriptManager csm = ClientScript;
csm.RegisterStartupScript(this.GetType(), "scriptonload", scriptText, true);
并在repeating_ItemDataBound
中 rating.BehaviorID = "ratingControlBehavior" + pnt.eval_id.ToString();