首页 新闻 会员 周边

在ASP.net中自定义模板控件同ajax交互的问题(向后台提交数据)

0
悬赏园豆:20 [待解决问题]

直接上代码!

<asp:TemplateField HeaderText="Work Performance">
                            <ItemTemplate>
                                <span id="ratingSaved">评分结果!</span>
                                <div id="rateMe" title="评分...">
                                    <asp:LinkButton ID="_1" title="1" OnClientClick="return rateIt(this)" onmouseover="rating(this)" onmouseout="off(this)" runat="server"></asp:LinkButton>
                                    <asp:LinkButton ID="_2" title="1.5" OnClientClick="return rateIt(this)" onmouseover="rating(this)" onmouseout="off(this)" runat="server"></asp:LinkButton>
                                    <asp:LinkButton ID="_3" title="2" OnClientClick="return rateIt(this)" onmouseover="rating(this)" onmouseout="off(this)" runat="server"></asp:LinkButton>
                                    <asp:LinkButton ID="_4" title="2.5" OnClientClick="return rateIt(this)" onmouseover="rating(this)" onmouseout="off(this)" runat="server"></asp:LinkButton>
                                    <asp:LinkButton ID="_5" title="3" OnClientClick="return rateIt(this)" onmouseover="rating(this)" onmouseout="off(this)" runat="server"></asp:LinkButton>
                                </div>
                            </ItemTemplate>

                        </asp:TemplateField>

  <style type="text/css">
        /*#rateStatus{float:left; clear:both; width:100%; height:20px;}*/
        #rateMe {
            clear: both;
            width: 100%;
            padding: 0px;
            margin: 0px;
        }

            #rateMe li {
                float: left;
                list-style: none;
            }

                #rateMe li a:hover,
                #rateMe .on {
                    background: url(Images/star_on.gif) no-repeat;
                    width: 12px;
                    height: 12px;
                }

            #rateMe .a {
                float: left;
                background: url(Images/star_off.gif) no-repeat;
                width: 12px;
                height: 12px;
            }

            #rateMe a {
                float: left;
                background: url(Images/star_off.gif) no-repeat;
                width: 12px;
                height: 12px;
            }

        #ratingSaved {
            display: none;
        }

        .saved {
            color: red;
        }
    </style>
    <script>


        var sMax;    // 最大数量的星星即最大评分值
        var holder; // 鼠标停留的评分控件
        var preSet; // 保存了评分值(通过单击来进行评分)
        var rated; //是否评分过,并保存了结果(注意此值一旦设为空,就不能再评分)

        // 鼠标停留事件
        function rating(num) {
            sMax = 0;    // 默认值为0
            for (n = 0; n < num.parentNode.childNodes.length; n++) {
                if (num.parentNode.childNodes[n].nodeName == "A") {
                    sMax++;
                }
            }

            if (!rated) {
                //m = num.className.getElementById("MainContent_gvWorkPerformance__1_5");
                s = num.id.replace("MainContent_gvWorkPerformance__", ''); // 获取选中的星星的索引,这里使用_1,_2,_3,_4,_5来做为评分控件的ID,当然也有其他的方式。
                var b = s.split('');
                var m = parseInt(b[0]);
                a = 0;
                for (i = 1; i <= sMax; i++) {
                    if (i <= m) {
                        var iValue = i.toString() + b[1] + b[2];
                        document.getElementById("MainContent_gvWorkPerformance__" + iValue).className = "on";
                        //document.getElementById("rateStatus").innerHTML = num.title;
                        holder = a + 1;
                        a++;
                    } else {
                        var iValue = i.toString() + b[1] + b[2];
                        document.getElementById("MainContent_gvWorkPerformance__" + iValue).className = "";
                    }
                }
            }
        }

        // 离开事件
        function off(me) {
            if (!rated) {
                if (!preSet) {
                    for (i = 1; i <= sMax; i++) {
                        for (j = 0; j <= 5; j++) {
                            var iValue = i.toString() + "_" + j.toString();
                            document.getElementById("MainContent_gvWorkPerformance__" + iValue).className = "";
                        }
                        //document.getElementById("rateStatus").innerHTML = me.parentNode.title;
                    }
                } else {
                    rating(preSet);
                    //document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML;
                }
            }
        }

        // 点击进行评分

        function rateIt(me) {
            if (!rated) {
                // document.getElementById("rateStatus").innerHTML = me.title;//document.getElementById("ratingSaved").innerHTML + " :: "+
                preSet = me;
                rated = 1;  //设为1以后,就变成了最终结果,不能再修改评分结果
                sendRate(me);
                rating(me);
                return false;
            }
        }

        //使用Ajax或其他方式发送评分结果 
        function sendRate(sel) {
            $.ajax({
                url: "WorkPerformance.aspx",
                type: "post",
                data: "sel",
                success: function (data) {
                return sel.title}
            })
            //alert("评分结果: " + sel.title);
        }

 

我有下面几个问题,在后台cs文件中如何接收?

还有看懂代码应该知道每点击一行会用ajax向后台传送一个"sel.title",也就是你的评分分数,我想在点击sumbit按钮的时候将每一行的分数都提交到后台,不知道如何做,请大家指教了~

那年的冬天的主页 那年的冬天 | 初学一级 | 园豆:15
提问于:2015-12-04 10:55
< >
分享
所有回答(1)
1

这种方式提交Ajax,后台是会到Page_Load方法中的。取数据的话是用Request.InputStream取到输入的流,然后转化成你想要的格式接可以了。

至于将每个数据都提交到后台,可以用js将每一行的数据拼接成JSON字符串,然后用Ajax传到后台。

GGWP | 园豆:58 (初学一级) | 2015-12-04 11:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册