GridView数据上移、下移(可更新数据库)
设计效果:
运行效果: 
Default.aspx页面代码: (我用了ajax)
前台完整代码
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2 <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title>GridView数据上移、下移、置顶</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <div style="text-align: center">
12 <asp:ScriptManager ID="ScriptManager1" runat="server">
13 </asp:ScriptManager>
14 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
15 <ContentTemplate>
16 <asp:GridView ID="gvData" runat="server" AutoGenerateColumns="False" Font-Size="10pt"
17 Width="500px">
18 <Columns>
19 <asp:TemplateField HeaderText="ID">
20 <EditItemTemplate>
21
22 </EditItemTemplate>
23 <ItemTemplate>
24 <asp:Label ID="lbID" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
25 </ItemTemplate>
26 </asp:TemplateField>
27 <asp:TemplateField HeaderText="number">
28 <EditItemTemplate>
29
30 </EditItemTemplate>
31 <ItemTemplate>
32 <asp:Label ID="lbNumber" runat="server" Text='<%# Bind("number") %>'></asp:Label>
33 </ItemTemplate>
34 </asp:TemplateField>
35 <asp:TemplateField HeaderText="操作">
36 <ItemTemplate>
37 <asp:LinkButton ID="lbtUp" runat="server" OnClick="lbtUp_Click">上移</asp:LinkButton>
38 <asp:LinkButton ID="lbtDown" runat="server" OnClick="lbtDown_Click">下移</asp:LinkButton>
39 <asp:LinkButton ID="lbtTop" runat="server" OnClick="lbtTop_Click">置顶</asp:LinkButton>
40 </ItemTemplate>
41 </asp:TemplateField>
42 </Columns>
43 </asp:GridView>
44 </ContentTemplate>
45 </asp:UpdatePanel>
46
47 </div>
48 </form>
49 </body>
50 </html>
51
完整Default.aspx.cs代码:
Default.aspx.cs代码
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10
11 public partial class _Default : System.Web.UI.Page
12 {
13 DataSet ds = new DataSet();
14 DataTable dt = new DataTable();
15
16 protected void Page_Load(object sender, EventArgs e)
17 {
18 if (!Page.IsPostBack)
19 {
20 Loaddata();
21 }
22 }
23
24 /// <summary>
25 /// 载入数据 绑定gv
26 /// </summary>
27 public void Loaddata()
28 {
29 ds = DataEdit.GetData();
30 dt = ds.Tables[0];
31 gvData.DataSource = dt;
32 gvData.DataBind();
33 }
34
35 /// <summary>
36 /// 数据上移
37 /// </summary>
38 /// <param name="sender"></param>
39 /// <param name="e"></param>
40 protected void lbtUp_Click(object sender, EventArgs e)
41 {
42 LinkButton lbUp = (LinkButton)sender;
43 DataControlFieldCell dcl = (DataControlFieldCell)lbUp.Parent;
44 GridViewRow gvr = (GridViewRow)dcl.Parent;
45 Label lbID = gvData.Rows[gvr.RowIndex].Cells[0].FindControl("lbID") as Label; //获取要准备上移 下移 或置顶的数据的ID
46 Label lbNumber = gvData.Rows[gvr.RowIndex].Cells[0].FindControl("lbNumber") as Label;//获取要准备上移 下移 或置顶的数据的number
47 //此为上移
48 //获取此数据的上一条记录,两条记录数据相互对换
49 //对换前先判断要上移的数据是否是第一条
50 if (gvr.RowIndex > 0)
51 {
52 Label lbUpID = gvData.Rows[gvr.RowIndex - 1].Cells[0].FindControl("lbID") as Label; //gvr.RowIndex - 1 获取上一条
53 Label lbUpNumber = gvData.Rows[gvr.RowIndex - 1].Cells[0].FindControl("lbNumber") as Label;
54 //修改数据
55 IsOK isok = DataEdit.UpdateData(Convert.ToInt32(lbID.Text), lbUpNumber.Text);
56 if (isok == IsOK.Yes)
57 {
58 isok = DataEdit.UpdateData(Convert.ToInt32(lbUpID.Text), lbNumber.Text);
59 if (isok == IsOK.Yes)
60 {
61 Loaddata();
62 }
63 else
64 {
65
66 }
67 }
68 }
69 }
70
71 /// <summary>
72 /// 数据下移
73 /// </summary>
74 /// <param name="sender"></param>
75 /// <param name="e"></param>
76 protected void lbtDown_Click(object sender, EventArgs e)
77 {
78 LinkButton lbUp = (LinkButton)sender;
79 DataControlFieldCell dcl = (DataControlFieldCell)lbUp.Parent;
80 GridViewRow gvr = (GridViewRow)dcl.Parent;
81 Label lbID = gvData.Rows[gvr.RowIndex].Cells[0].FindControl("lbID") as Label; //获取要准备上移 下移 或置顶的数据的ID
82 Label lbNumber = gvData.Rows[gvr.RowIndex].Cells[0].FindControl("lbNumber") as Label;//获取要准备上移 下移 或置顶的数据的number
83 //此为下移
84 //获取此数据的下一条记录,两条记录数据相互对换
85 //对换前先判断要下移的数据是否是最后一条
86 if (gvr.RowIndex < gvData.Rows.Count - 1)
87 {
88 Label lbUpID = gvData.Rows[gvr.RowIndex + 1].Cells[0].FindControl("lbID") as Label; //gvr.RowIndex + 1 获取下一条
89 Label lbUpNumber = gvData.Rows[gvr.RowIndex + 1].Cells[0].FindControl("lbNumber") as Label;
90 //修改数据
91 IsOK isok = DataEdit.UpdateData(Convert.ToInt32(lbID.Text), lbUpNumber.Text);
92 if (isok == IsOK.Yes)
93 {
94 isok = DataEdit.UpdateData(Convert.ToInt32(lbUpID.Text), lbNumber.Text);
95 if (isok == IsOK.Yes)
96 {
97 Loaddata();
98 }
99 else
100 {
101
102 }
103 }
104 }
105 }
106
107 protected void lbtTop_Click(object sender, EventArgs e)
108 {
109 //置顶
110 }
111 }
112
DAL OpData.cs代码
OpData.cs代码
1 using System;
2 using System.Data;
3 using System.Data.SqlClient;
4 using System.Configuration;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11
12 /// <summary>
13 /// Opdata 的摘要说明
14 /// </summary>
15 public static class Opdata
16 {
17 /// <summary>
18 /// 载入所有数据
19 /// </summary>
20 /// <returns></returns>
21 public static DataSet GetData()
22 {
23 DataSet ds = SQLHelper.ExecuteDataSet("select * from mdata", CommandType.Text,null);
24 return ds;
25 }
26
27 /// <summary>
28 /// 根据id更新数据.
29 /// </summary>
30 /// <param name="id"></param>
31 /// <param name="number"></param>
32 /// <returns></returns>
33 public static IsOK UpdateData(int id, string number)
34 {
35 int count = SQLHelper.ExecuteNonQuery("update mdata set number = @number where id = @id", CommandType.Text,
36 new SqlParameter("@number",number),
37 new SqlParameter("@id",id));
38 if (count == 1)
39 {
40 return IsOK.Yes;
41 }
42 else
43 {
44 return IsOK.Error;
45 }
46 }
47 }
48
BLL DataEdit.cs代码
DataEdit代码
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10
11 /// <summary>
12 /// DataEdit 的摘要说明
13 /// </summary>
14 public static class DataEdit
15 {
16 /// <summary>
17 /// 载入所有数据
18 /// </summary>
19 /// <returns></returns>
20 public static DataSet GetData()
21 {
22 DataSet ds = Opdata.GetData();
23 return ds;
24 }
25
26 /// <summary>
27 /// 根据id更新数据.
28 /// </summary>
29 /// <param name="id"></param>
30 /// <param name="number"></param>
31 /// <returns></returns>
32 public static IsOK UpdateData(int id, string number)
33 {
34 IsOK isok = Opdata.UpdateData(id, number);
35 return isok;
36 }
37 }
38
Model IsOK.cs代码
IsOK.cs代码
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10
11
12 public enum IsOK
13 {
14 Error,
15 Yes
16 }
17
18
结构视图:

以上是完整的了..(刚刚发完就收到朋友的留言,所以决定发一个完整的上来。 不会在这里发附件。 那我就把代码整理一下吧。)
我用三层写的, BLL和DAL用不着发,其实方法很简单,就是把要移动的行和要移动到 该位置的行数据对换,我觉得这个方法比较笨, 希望有更好的办法.
置顶功能因为我想的办法要修改数据库,所以就不发置顶的代码了.


浙公网安备 33010602011771号