Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery在ASP.NET GridView拖放中面临的问题_Javascript_Jquery_Asp.net_Gridview_Tablednd - Fatal编程技术网

Javascript 使用jQuery在ASP.NET GridView拖放中面临的问题

Javascript 使用jQuery在ASP.NET GridView拖放中面临的问题,javascript,jquery,asp.net,gridview,tablednd,Javascript,Jquery,Asp.net,Gridview,Tablednd,我希望有人能帮助我解决这个问题。 我有一个ASP.NET网格视图,其中DataKeyName具有网格视图的主键 我需要拖放这些网格行,以便用户可以在网格视图中排序。 我可以通过添加以下代码来拖放gridview $(document).ready(function () { $("#GridView1").tableDnD(); }); 但为了更新数据库中的这个顺序,我在获取更新的行顺序时遇到了问题。 i、 e当我使用tableDnD tableDnDS

我希望有人能帮助我解决这个问题。 我有一个ASP.NET网格视图,其中DataKeyName具有网格视图的主键

我需要拖放这些网格行,以便用户可以在网格视图中排序。 我可以通过添加以下代码来拖放gridview

$(document).ready(function () {
            $("#GridView1").tableDnD();
        });
但为了更新数据库中的这个顺序,我在获取更新的行顺序时遇到了问题。 i、 e当我使用tableDnD tableDnDSerialize时,它总是返回null 翁德罗普:

返回:GridView1[]=&GridView1[]=


请帮助我。

您需要在GridView上提供键值的行id。这在OnRowDataBound事件中很容易实现。 在头脑中链接JavaScript文件。jquery.tablednd.js自2014年10月30日起生效

<script src="js/jquery-1.11.1.js" type="text/javascript"></script>
<script src="js/jquery.color.js" type="text/javascript"></script>
<script src="js/jquery.tablednd.js" type="text/javascript"></script>
编写页面JavaScript。将gvDevConfig替换为GridView的名称。利用您自己的ajax例程以新的删除顺序更新数据库。将ctl00\u indexPH\u gvDevConfig替换为GridView的服务器id。如果不在占位符内,则可以通知$.tableDnD.serialize;要查看serialize传递的内容,并替换除数值以外的所有值,请使用分号分隔

<script type="text/javascript" language="javascript">
    function ActivateGrid() {
        $("#<%=gvDevConfig.ClientID%>").tableDnD({
            onDragClass: "highlight",
            onDrop: function (table, row) {
                $(row).animate({ backgroundColor: "#ffff99" }, 1000).animate({ backgroundColor: "white" }, 3500);
                var values = $.tableDnD.serialize().replace(/&/gi, ";").replace(/%5B%5D/gi, "").replace(/ctl00_indexPH_gvDevConfig=/gi, "");
                $.ajax({ type: "GET", url: "xml/ajax_spacers.aspx", async: true, data: "DevOrder=" + values, success: function (t) {
                    $(".jqOrderResults").html("Order Saved");
                } 
                });
            }
        });
    }
</script>
将类添加到页眉和页脚以防止拖放到其位置。创建OnRowDataBound事件以激活此功能并为每一行分配一个键。注意,此GridView包含在UpdatePanel中,页面上有一个asp:ScriptManager。使用您自己的SqlDataSource或进程填充GridView

<asp:GridView ID="gvDevConfig" runat="server" DataSourceID="dsDevConfig" DataKeyNames="DevConfigurationID"
    Width="795" CssClass="gvDevCfg" BorderStyle="None" GridLines="None" AutoGenerateColumns="false"
    UseAccessibleHeader="false" OnRowDataBound="gvDevConfig_RDB" ShowFooter="true"
    OnRowCommand="AddNewRecord">
    <HeaderStyle CssClass="dgHead nodrop nodrag" />
    <RowStyle VerticalAlign="Top" />
    <AlternatingRowStyle VerticalAlign="Top" />
    <FooterStyle CssClass="NewMaterialEntry nodrop nodrag" VerticalAlign="Top" HorizontalAlign="Center" />
    <Columns>
        <asp:Your Columns Here />
    </Columns>
</asp:GridView>
OnRowDataBound的代码隐藏。将devConfiguration ID更新到密钥字段。一旦网格呈现其数据并到达页脚,就会调用JavaScript来初始化DnD特性

protected void gvDevConfig_RDB(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (!((e.Row.RowState & DataControlRowState.Edit) > 0))
        {
            e.Row.Attributes.Add("id", DataBinder.Eval(e.Row.DataItem, "DevConfigurationID").ToString());
            e.Row.Attributes["ondblclick"] = ClientScript.GetPostBackClientHyperlink(((LinkButton)(e.Row.FindControl("lbEdit"))), "", false);
        }
    }
    else if (e.Row.RowType == DataControlRowType.Footer)
    {
        ScriptManager.RegisterStartupScript(((GridView)sender), this.GetType(), "ResetGrid", "<script type='text/javascript'>ActivateGrid();</script>", false);
    }
}
下面是我的ajax例程,它使用要更新的表的键值来增加订单。您将不得不根据您的逻辑调整它,并且肯定需要对查询字符串进行更多的错误和值检查

private void UpdateDevOrder()
{
    string keyValues = ValueOf.QueryString("DevOrder");

    try
    {
        string[] RowData = keyValues.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        int NewOrder = 1;

        for (int i = 0; i < RowData.Length; i++)
        {
            string DevConfigurationID = RowData[i];
            DB.Update("DevelopmentConfig", "DisplayOrder=" + NewOrder.ToString(), "DevConfigurationID=" + DevConfigurationID);
            NewOrder++;
        }
        Response.Write("Order Saved");
    }
    catch (Exception ex)
    {
        audit.Audit(ex.Message, "Exception Error", Request.Url.AbsolutePath, "Xml Command", "UpdateDevOrder()");
        Response.Write("Failed");
    }
}

嗨,卡拉瓦尼。我面临着完全相同的问题。你最终找到解决办法了吗?干杯
private void UpdateDevOrder()
{
    string keyValues = ValueOf.QueryString("DevOrder");

    try
    {
        string[] RowData = keyValues.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        int NewOrder = 1;

        for (int i = 0; i < RowData.Length; i++)
        {
            string DevConfigurationID = RowData[i];
            DB.Update("DevelopmentConfig", "DisplayOrder=" + NewOrder.ToString(), "DevConfigurationID=" + DevConfigurationID);
            NewOrder++;
        }
        Response.Write("Order Saved");
    }
    catch (Exception ex)
    {
        audit.Audit(ex.Message, "Exception Error", Request.Url.AbsolutePath, "Xml Command", "UpdateDevOrder()");
        Response.Write("Failed");
    }
}