在单个页面上处理多个ajaxtoolkit评级控件BehaviorID

时间:2011-08-28 10:39:39

标签: c# asp.net rating

我有一个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以及每个的脚本编写代码,因为我需要为每个评级控件提供这些项目?

1 个答案:

答案 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();