| 使用 Javascript 调整 GridView 表格行顺序并保存到数据库 |
作者:孟宪会 发布日期:2010-09-03 00:20:57
|
ASPX 代码
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("Score", typeof(System.Double)));
System.Random rd = new System.Random();
for (int i = 1; i < 6; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "【孟子E章】" + i.ToString();
dr[2] = System.Math.Ceiling(rd.NextDouble() * 100);
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
GridView1.DataSource = dv;
GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick", "change(this)");
}
}
protected void SaveData_Click(object sender, EventArgs e)
{
String[] newData = NewOrder.Value.Split(',');
Response.Write("<h2>将下面的 SQL 语句更新到数据库即可:</h2>");
for (int i = 0; i < newData.Length; i++)
{
String[] order = newData[i].Split('|');
Response.Write("<li>" + "Update TableName Set OrderIndex = " + order[1] + " Where id = " + order[0]);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>孟宪会之 使用 Javascript 调整 GridView 表格行顺序并保存到数据库</title>
<script type="text/javascript">
var currentIndex = 1;
var lastRow = null;
var tableId = "<%=GridView1.ClientID %>"
function swapNodes(item1, item2) {
var itemtmp = item1.cloneNode(1);
var parent = item1.parentNode;
item2 = parent.replaceChild(itemtmp, item2);
parent.replaceChild(item2, item1);
parent.replaceChild(item1, itemtmp);
itemtmp = null;
}
function Move(r) {
var t = document.getElementById(tableId);
if (currentIndex + r == 0 || currentIndex + r == t.rows.length) {
alert("已经无法移动了。");
return;
}
swapNodes(t.rows[currentIndex], t.rows[currentIndex + r]);
currentIndex += r;
}
function change(r) {
var t = document.getElementById(tableId);
currentIndex = r.rowIndex;
if (lastRow) {
lastRow.style.backgroundColor = "#FFF";
}
r.style.backgroundColor = "#F88";
lastRow = r;
}
function SaveToDataBase() {
var newOrder = document.getElementById("<%=NewOrder.ClientID %>");
var t = document.getElementById(tableId);
var ret = [];
for (i = 1; i < t.rows.length; i++) {
dataId = t.rows[i].cells[0].getElementsByTagName("input")[0].value;
ret.push(dataId + "|" + i);
}
newOrder.value = ret.toString();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" CellPadding="6" AutoGenerateColumns="true" OnRowDataBound="GridView1_RowDataBound">
<HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<input type="hidden" name="DataId" value="<%#Eval("id") %>" />
<asp:CheckBox ID="x" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div style="padding: 10px 0">
<input type="button" value="上升" onclick="Move(-1)" />
<input type="button" value="下降" onclick="Move(1)" />
<asp:HiddenField ID="NewOrder" runat="server" />
<asp:Button ID="SaveData" runat="server" Text="保存到服务器" OnClientClick="SaveToDataBase()"
OnClick="SaveData_Click" />
</div>
</form>
</body>
</html>
|
原文地址:http://dotnet.aspx.cc/article/43c9091b-4a94-4c6f-93d5-8320a5e1034c/print.aspx
© 版权所有 【孟宪会之精彩世界】TM 2012