我有一个gridview,里面有头模板,项模板,编辑模板,如:<asp:TemplateField HeaderText="For Online Payment?" SortExpression="IsOnlinePaymentDesc">
                        <ItemTemplate>
                            <asp:Label ID="lblIsOnlinePaymentDesc" Text='<%# Eval("IsOnlinePaymentDesc") %>'
                                runat="server" />
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList ID="ddlIsOnlinePayment" runat="server">
                            </asp:DropDownList>
                            <asp:HiddenField ID="hidIsOnlinePayment" runat="server" Value='<%# Eval("IsOnlinePayment") %>' />
                        </EditItemTemplate>
                        <ItemStyle HorizontalAlign="Left" Width="10%" />
                        <HeaderStyle HorizontalAlign="Left" Wrap="false" />
                    </asp:TemplateField>
我现在要做的,在最后一列有上下移动的图片,点击当前行的向上图片,则这一行移动到上一行,上一行会移动到当前点击行,要怎么实现啊,求高手大侠给个例子吧……

解决方案 »

  1.   

    http://blog.csdn.net/seedling_lq/article/details/1604500
      

  2.   

    两种思路:
    1、用JS移动行,实际数据不动,就是用Jquery做移动很简单
    2、就是后台移动集合是数据顺序,然后重新绑定,也不能,主要看你数据源是什么类型。
      

  3.   

    参考:
    http://www.cnblogs.com/insus/articles/1406440.html
    http://www.cnblogs.com/insus/articles/1922815.html
      

  4.   

    是repeater的,原理相同,今个心情不错
     protected void imgup_Click(object sender, CommandEventArgs e)//向上走
        {
            string sql = "select top 1 p_pid,p_paixu from p_product where p_cid =" + drop.SelectedValue + " and p_paixu >" + e.CommandArgument;
            sql = sql + " order by p_paixu";
            DataTable dt1 = sqlhelper.GetTable(sql);
            if (dt1.Rows.Count>0)
            {
                string p1 = dt1.Rows[0]["p_pid"].ToString();//上一个ID  123
                string px1 = dt1.Rows[0]["p_paixu"].ToString();//上一个ID的排序值 123
            }        string px2 = "";
            string sql2 = "select p_paixu from p_product where p_pid=" + e.CommandName; //122
            object obj = sqlhelper.ExecuteScalar(sql2);
            if (obj != null)
            {
                px2 = obj.ToString();//本ID的排序值 122
            }        if (dt1.Rows.Count > 0)//把本ID的排序值和上一个ID的排序值相互交换一下
            {
                string sql3 = "update p_product set p_paixu = @px2 where p_pid=" + e.CommandName;
                OleDbParameter[] para2 = new OleDbParameter[]{
                new OleDbParameter("@px2",dt1.Rows[0]["p_paixu"].ToString())
            };
                sqlhelper.ExecuteQuery(sql3, para2, CommandType.Text);            string sql4 = "update p_product set p_paixu = @px1 where p_pid=" + dt1.Rows[0]["p_pid"].ToString();
                OleDbParameter[] para1 = new OleDbParameter[]{
                new OleDbParameter("@px1",px2)
            };
                sqlhelper.ExecuteQuery(sql4, para1, CommandType.Text);
            }
            repeaterdatabind();
        }    protected void imgdown_Click(object sender, CommandEventArgs e)
        {
            string sql = "select top 1 p_pid,p_paixu from p_product where p_cid =" + drop.SelectedValue + " and p_paixu <" + e.CommandArgument;
            sql = sql + " order by p_paixu desc";
            DataTable dt1 = sqlhelper.GetTable(sql);
            if (dt1.Rows.Count > 0)
            {
                string p1 = dt1.Rows[0]["p_pid"].ToString();//下一个ID
                string px1 = dt1.Rows[0]["p_paixu"].ToString();//下一个ID的排序值
            }        string px5 = "";
            string sql2 = "select p_paixu from p_product where p_pid=" + e.CommandName;
            object obj = sqlhelper.ExecuteScalar(sql2);
            if (obj != null)
            {
                px5 = obj.ToString();//本ID的排序值
            }        if (dt1.Rows.Count > 0)//把本ID的排序值和下一个ID的排序值相互交换一下
            {
                string sql3 = "update p_product set p_paixu = @px3 where p_pid=" + e.CommandName;
                OleDbParameter[] para2 = new OleDbParameter[]{
                new OleDbParameter("@px3",dt1.Rows[0]["p_paixu"].ToString())
            };
                sqlhelper.ExecuteQuery(sql3, para2, CommandType.Text);            string sql4 = "update p_product set p_paixu = @px4 where p_pid=" + dt1.Rows[0]["p_pid"].ToString();
                OleDbParameter[] para1 = new OleDbParameter[]{
                new OleDbParameter("@px4",px5)
            };
                sqlhelper.ExecuteQuery(sql4, para1, CommandType.Text);
            }
            repeaterdatabind();
        }
      

  5.   

    使用 Javascript 调整 GridView 表格行顺序并保存到数据库
      

  6.   

    好像以上这些都不适合我这个功能,如果纯粹的是在界面上下移动,那用jquery就几句代码就可以实现,我已经做过了,我这个任务是从数据拿出的数据是按DisplayOrder排序的,当你把某一行上下移动时,是要改变数据库的,并且如果某两行的DisplayOrder一样的,你移上去,刷新还是一样的,并且有Edit,Update行的功能, <EditItemTemplate>里面的控件值不好拿啊。
      

  7.   

    当你把某一行上下移动时,是要改变数据库的?
    ajax提交就可以保存并且有Edit,Update行的功能?
    http://dotnet.aspx.cc/file/Add-Delete-Update-Edit-Data-With-Paging-in-GridView.aspx
      

  8.   

    当DisplayOrder一样,你不会再按时间 time排序啊