1

我正在用 asp.net 编写 Web 应用程序。我有一个输入表格。我想当客户端在插入之前单击保存按钮时,检查此数据是否在数据库中。我已经用后面的代码编写了它。但我想用 java 脚本来做这件事,因为当我使用页面刷新后面的代码时。这是我检查重复数据的 .net 代码:

SqlCommand commandrepeat1 = new SqlCommand("Select code from CmDet where code = " + txtcode.Text + " and company = " + DataBase.globalcompany.ToString() + " order by code desc");
            commandrepeat1.Connection = objconnection;
            objconnection.Close();
            objconnection.Open();
            SqlDataReader drmax1;
            drmax1 = commandrepeat1.ExecuteReader();
            drmax1.Read();
            if (drmax1.HasRows)
            {
                MessageBox.Show("Duplicate data . try again!!! ");
                txtcode.Focus();
                objconnection.Close();
                return;
            }
            objconnection.Close();
        }
        catch
        {
            objconnection.Close();
        }
4

1 回答 1

1

您应该让您的 ASP.NET 按钮同时实现OnClick事件(一旦确定没有重复数据就执行服​​务器端代码)和OnClientClick事件(执行将调用以检查是否存在重复数据的 JavaScript)。

我建议如下:

在 JavaScript 中,将 jQuery click 事件添加到您的按钮,如下所示:

$( "#myButton" ).click(function() {

});

注意:我假设您的按钮名称为myButton,将其更改为与标记中按钮的 ID 匹配。

现在您需要调用服务器端来执行您的逻辑来查找重复数据。我建议使用通过 jQuery.ajax()函数调用的 ASP.NET AJAX 页面方法,如下所示:

$.ajax({
    type: "POST",
    url: "YourPage.aspx/DoesDataExist",
    data: "{'codeValue': $('#myTextBox').val()}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        if(msg.d) {
            // This is a duplicate, alert user with message
            // Block the server-side click from happening with return false;
            return false;
        }
    }
});

最后,我们需要构建服务器端代码来处理上面 jQuery 调用的页面方法,如下所示:

[WebMethod]
public static bool DoesDataExist()
{
    SqlCommand commandrepeat1 = new SqlCommand("Select code from CmDet where code = " + txtcode.Text + " and company = " + DataBase.globalcompany.ToString() + " order by code desc");
    commandrepeat1.Connection = objconnection;
    objconnection.Close();
    objconnection.Open();
    SqlDataReader drmax1;
    drmax1 = commandrepeat1.ExecuteReader();
    drmax1.Read();
    if (drmax1.HasRows)
    {
        objconnection.Close();
        return true;
    }
    objconnection.Close();

    return false;
}
于 2013-08-20T15:10:20.463 回答