二、排序的小代码
做到排序时,我第一个想到的笨方法是手动输入,后来考虑到分类可能会很多,于是就想到了用过的那种点击向上、向下按钮就自动向上和向下的东东,例如qq空间里头播放器排序。
于是上网搜了一下,结果很遗憾,调数据库的没有。没办法只得自己研究了一个。用起来也还行,自我感觉差不了多少。
代码如下:
以下是引用片段: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="../conn.asp"--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Untitled Document</title> <STYLE type=text/css>TD { FONT-SIZE: 12px } SELECT { FONT-SIZE: 12px } INPUT { FONT-SIZE: 12px } A { TEXT-DECORATION: none } A:hover { COLOR: #c90000; TEXT-DECORATION: none } </STYLE> <SCRIPT LANGUAGE="JavaScript"> <!-- //window.onload = initPage; //function initPage() //{ // BTnPutUp.onclick = putUp; // BTnPutDown.onclick = putDown; // BTnGoUp.onclick = goUp; // BTnGoDown.onclick = goDown; //} function putUp() { var strTempValue; var strTempText; var intCurIndex; intCurIndex = document.paixu.sltFruit.selectedIndex; //alert("intCurIndex: " + intCurIndex); if (intCurIndex > 0) { strTempValue= document.paixu.sltFruit.options.item(intCurIndex).value; strTempText = document.paixu.sltFruit.options.item(intCurIndex).text; strTemp=document.paixu.sltFruit.options.item(intCurIndex - 1).value // alert(strTempText + " - " + strTempValue); document.paixu.sltFruit.options.item(intCurIndex).value = document.paixu.sltFruit.options.item(intCurIndex - 1).value; document.paixu.sltFruit.options.item(intCurIndex).text= document.paixu.sltFruit.options.item(intCurIndex - 1).text; document.paixu.sltFruit.options.item(intCurIndex - 1).value= strTempValue; document.paixu.sltFruit.options.item(intCurIndex - 1).text= strTempText; document.paixu.sltFruit.selectedIndex = intCurIndex - 1; intCur=intCurIndex - 1 //shang=eval("document.paixu."+"slt"+intCurIndex+".value")-1; eval("document.paixu."+"slt"+intCurIndex+".value=strTemp") //xia=eval("document.paixu."+"slt"+intCur+".value")-(-1); eval("document.paixu."+"slt"+intCur+".value=strTempValue") //alert( ss); //document.paixu.slt"+intCurIndex+".value=eval("document.paixu."+"slt"+intCurIndex+".value")-1; //document.paixu."slt"+intCurIndex+".value"=document.paixu.("slt"+intCurIndex).value-1; } } function putDown() { var strTempValue; var strTempText; var intCurIndex; var intIndexCount; intCurIndex = document.paixu.sltFruit.selectedIndex; intIndexCount = document.paixu.sltFruit.length; //alert("intCurIndex: " + intCurIndex); //alert("intIndexCount: " + intIndexCount); if (intCurIndex < intIndexCount - 1) { strTempValue= document.paixu.sltFruit.options.item(intCurIndex).value; strTempText = document.paixu.sltFruit.options.item(intCurIndex).text; strTemp=document.paixu.sltFruit.options.item(intCurIndex +1).value //alert(strTempText + " - " + strTempValue); document.paixu.sltFruit.options.item(intCurIndex).value = document.paixu.sltFruit.options.item(intCurIndex + 1).value; document.paixu.sltFruit.options.item(intCurIndex).text = document.paixu.sltFruit.options.item(intCurIndex + 1).text; document.paixu.sltFruit.options.item(intCurIndex + 1).value= strTempValue; document.paixu.sltFruit.options.item(intCurIndex + 1).text = strTempText; document.paixu.sltFruit.selectedIndex = intCurIndex + 1; intCur=intCurIndex + 1 //shang=eval("document.paixu."+"slt"+intCurIndex+".value")-1; eval("document.paixu."+"slt"+intCurIndex+".value=strTemp") //xia=eval("document.paixu."+"slt"+intCur+".value")-(-1); eval("document.paixu."+"slt"+intCur+".value=strTempValue") } } function goUp() { var intCurIndex; intCurIndex = sltCountry.selectedIndex; if (intCurIndex > 0) sltCountry.selectedIndex = intCurIndex - 1; } function goDown() { var intCurIndex; var intIndexCount; intCurIndex = sltCountry.selectedIndex; intIndexCount = sltCountry.length; if (intCurIndex < intIndexCount - 1) sltCountry.selectedIndex = intCurIndex + 1; } //--> </SCRIPT> <body> <%'存储数据库的过程 n=trim(request("num")) if n<>"" then i=1 y=0 do while not n<0 conn.execute("update BigClass_New set paixu="&i&" where BigClassID="&trim(request(("slt")&y))&"") '我用的办法是在数据库表里加个字段定义排序,然后显示时就靠它了 'trim(request(("slt")&y))是动态获取input的值,做循环的的时候 '都这么用 n=n-1 i=i+1 y=y+1 loop response.Write("<SCRIPT>alert('修改成功');location='News_ClassManage.asp';</SCRIPT>") 'response.End() else %> <div align="center"> <table class="border" border="0" cellspacing="2" width="620" cellpadding="0" style="word-break:break-all"> <% Set rs= Server.CreateObject("ADODB.Recordset") sql="select * from BigClass_New order by paixu" rs.open sql,conn,1,1 if not rs.eof then '我的数据库表名叫BigClass_New%> <form name="paixu" method="post" action="News_ClassPaixu.asp"> <tr bgcolor="#A4B6D7" class="title"> <td width="50%" height="55" align="right"> <div align="right"> <SELECT NAME="sltFruit" size="<%=rs.recordcount%>"> <%do while not rs.eof %> <OPTION VALUE="<%=trim(rs("BigClassID"))%>"><%=trim(rs("BigClassName"))%></OPTION> <%rs.movenext loop%> </SELECT> </div> </td> <td width="40" height="25" align="center"> <INPUT TYPE="BUTTON" ID="BTnPutUp" VALUE="上移" onClick="javascript:return putUp();"> <INPUT TYPE="BUTTON" ID="BTnPutDown" VALUE="下移" onClick="javascript:return putDown();"> </td> </tr> <%rs.movefirst i=0 do while not rs.eof %> <input type="hidden" name="slt<%=i%>" value="<%=trim(rs("BigClassID"))%>"> <% rs.movenext i=i+1 loop%> <input type="hidden" name="num" value="<%=i-1%>"> <tr bgcolor="#A4B6D7" class="title"> <td width="560" height="55" align="center" colspan="2"> <input type="submit" name="save" value="保存"> </td> </tr> </form> <%else%> <tr bgcolor="#A4B6D7" class="title"> <td width="36" height="55" align="center" colspan="2"> <%response.Write("请先输入大类!")%> </td> </tr> </table> </div> <%end if%>
<%end if%> </body> </html> | 原理是按照BigClass_New表循环定义input,input的值就是目前的排序,这样就与select里的值对应起来了。再运行函数,使上下移动时,增减input里的值,也就是按照select里的排序顺序,修改了input里的值,这样再存储到库里的就是正确的排序了。
不晓得我这样的表达算不算清楚。哈哈!
暂时就举这么两个例子吧。
最后补充一句:不会您就百度吧。 上一页 [1] [2] |