直接上代码!
<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按钮的时候将每一行的分数都提交到后台,不知道如何做,请大家指教了~
这种方式提交Ajax,后台是会到Page_Load方法中的。取数据的话是用Request.InputStream取到输入的流,然后转化成你想要的格式接可以了。
至于将每个数据都提交到后台,可以用js将每一行的数据拼接成JSON字符串,然后用Ajax传到后台。