【问题标题】:Based on inputs in one textbox, query a MySQL database and update another textbox根据一个文本框中的输入,查询 MySQL 数据库并更新另一个文本框
【发布时间】:2013-11-11 15:43:35
【问题描述】:

基本上,我有一个带有 id(主键)和名称的 MySQL 表。当用户在网络表单上的“ID”文本框中输入一个数字时,我想根据输入的 id 用名称更新另一个文本框。最好的方法是什么?

我目前正在做的事情感觉很愚蠢,但它确实有效。当我的页面加载时,我将 id 和 name 拉入 DataTable 对象。然后当文本框更改时(TextChanged event),我回发到服务器,然后搜索我的数据表并更改名称文本框的值。

它可以工作,但由于回帖,它有点慢。我有一种感觉,这可以通过 javascript 来让表单感觉更灵敏?但我什至不确定要谷歌什么。有什么建议吗?

【问题讨论】:

    标签: mysql asp.net vb.net webforms


    【解决方案1】:

    您应该为此使用 JavaScript。无需回发到服务器。

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js"></script>
    <script>
    $(document).ready(function ()
        {
            $('input[name="txtid"]').on('change keyup',function()
            {
                $('input[name="txtnotifications"]').val
                (
                    $('input[name="txtid"]').val()
                );
            });
    });
    </script>
    </head>
    
    <body>
    <form action="/">
      <input name="txtid" type="text" />
      <br />
      <input name="txtnotifications" type="text" />
    </form>
    

    此外,用户输入 id 似乎很奇怪。这通常是数据库管理的字段,用户无法创建/更新它。

    【讨论】:

    • 我不太确定如何使用它。如何将我的 MySQL 数据链接到 javascript 代码?无论如何,我应该更具体。这是一个大学项目的一部分,我应该为管理员创建一个用户界面,以便为酒店管理系统插入“预订”记录。所以 id 是酒店 id,我想根据他在文本框中键入的 id 显示管理员插入的名称
    • 嗯——你可能会看到这样的东西。 asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AutoComplete/… 您将根据文本字段的输入查询数据库,并在用户键入时返回匹配项。这是一个演练。 asp.net/ajaxlibrary/act_autocomplete_simple.ashx
    【解决方案2】:

    如果酒店表很小,则拉出所有记录并呈现为 javascript 数组对象。

    <script src="Scripts/jquery-1.9.1.min.js"></script>
    
    <input id="txtID" type="text" runat="server" />
    <input id="txtName" type="text" runat="server" />
    
    <script type="text/javascript">
        $(function () {
            $('#<%= txtID.ClientID%>').on('change keyup', function () {
                var result = $.grep(hotels, function (e) { return e.id == $('#<%= txtID.ClientID%>').val(); });
                var output;
    
                if (result.length == 0) {
                    // not found
                    output = 'Hotel not found!!!';
                } else if (result.length == 1) {
                    // access the foo property using result[0].foo
                    output = result[0].name;
                } else {
                    // multiple items found
                    output = 'Multiple hotels found!!!';
                }
    
                $('#<%= txtName.ClientID%>').val(output);
            });
        });
    </script>
    

    在后面的代码中,您需要将记录呈现为序列化的 JSON 字符串:

    Private Sub rendertHotelList()
        Dim dt As DataTable = ... ' read hotel data from db into datatable
    
        Dim hotels = From row As DataRow In dt.AsEnumerable
                     Select id = CStr(row!EmployeeID), name = row!LastName
    
        Dim jss As New Script.Serialization.JavaScriptSerializer
        Dim s As String = jss.Serialize(hotels)
    
        ClientScript.RegisterClientScriptBlock(GetType(Page), "hotel_array", "var hotels = " & s, True)
    
    End Sub
    

    这样,当用户输入 id 值时,不需要回发到服务器。

    但是,如果表包含大量记录,并且您需要保持页面大小尽可能小,请使用 ajax 请求来检索名称。

    【讨论】:

      猜你喜欢
      • 2013-04-12
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多