【发布时间】:2020-02-27 20:26:54
【问题描述】:
我正在尝试使用查询字符串进行 Ajax 调用,但是我已经完成了一半,现在卡住了要做什么,我正在尝试使用 javascript 可排序函数更新 SQL 表。一旦项目向上或向下移动,我就会通过 ajax 并让它在 SQL 中更新。 (好吧,这就是我想要做的) 想知道你们是否可以帮忙。
<script>
$("#tableBody").sortable({
connectWith: "#tableBody",
update: function (event, ui) {
// this.id = #tableBody
// ui.item = Dragged item
console.log(ui.item.attr("data-id"));
console.log(ui.item.attr("data-prod-id"));
console.log(ui.item.index());
$.get('shop_prod_options_update_sort_order.aspx?id=' + id + '&prodid=' + prodid + '&sortorder=' + sortorder);
}
});
</script>
<Script Language="VB" RunAt="Server">
Dim intOptionId As Integer = 1
Dim intProdId As Integer = 1
Dim intNewSortOrder As Integer = 0
Dim intOldSortOrder As Integer = 0
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsNumeric(Request.QueryString("id")) Then
intOptionId = Val(Request.QueryString("id"))
End If
If Request.QueryString("sortorder") = "sortorder" Then
intOptionId = True
Else
intOptionId = False
End If
If Not IsPostBack Then
UpdateList()
End If
End Sub
Private Sub UpdateList()
Dim connDBConnection As SqlConnection = Nothing
Dim commDBCommand As SqlCommand
Dim strSQLQuery As String = ""
'''''''''''''''''''''''''''''''
Try
strSQLQuery = "SELECT option_order FROM shop_option WHERE option_id = @option_id"
Using connConnnection As New SqlConnection(Database.GetDatabaseConnString)
connConnnection.Open()
Using commCommand As New SqlCommand(strSQLQuery,connConnnection)
commCommand.Parameters.AddWithValue("@option_id", intOptionId)
intOldSortOrder = commCommand.ExecuteScalar()
End Using
End Using
If intOldSortOrder>intNewSortOrder Then
strSQLQuery = "UPDATE option_order FROM shop_option WHERE option_id = @option_id", intOptionId
strSQLQuery += "SET option_order = option_order + 1 FROM shop_option WHERE option_id = @option_id", intOptionId
Else
strSQLQuery = "UPDATE option_order FROM shop_option WHERE option_id = @option_id;", intOptionId
strSQLQuery += "SET option_order = option_order - 1 FROM shop_option WHERE option_id = @option_id", intOptionId
End If
Using connConnnection As New SqlConnection(Database.GetDatabaseConnString)
connConnnection.Open()
Using commCommand As New SqlCommand(strSQLQuery,connConnnection)
commCommand.Parameters.AddWithValue("@option_id", intOptionId)
intOldSortOrder = commCommand.ExecuteScalar()
End Using
End Using
Catch ex As Exception
Finally
Database.Disconnect(connDBConnection)
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</form>
</body>
</html>
【问题讨论】:
-
您遇到了什么问题?
-
@ChetanRanpariya 我遇到的问题是,我从数据库中获取了一个列表。使用 javascript 中的 sortable,它允许我拖放列表中的项目。尝试从 ajax 调用更新数据库并将新移动的项目设置在数据库中。希望这是有道理的
-
一个空的
Catch是魔鬼的工作室。 -
这条线在做什么?
strSQLQuery = "UPDATE option_order FROM shop_option WHERE option_id = @option_id", intOptionId我认为不会编译。 -
strSQLQuery += "SET option_order = option_order + 1 FROM shop_option WHERE option_id = @option_id", intOptionId同样,这不会编译。 & 号是 vb.net 中的字符串连接运算符。尽管“+”会起作用,但您可能会得到意想不到的结果。将此字符串添加到第一个字符串不会生成有效的 sql 命令。
标签: javascript sql ajax vb.net