You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中捕获HTML输入框文本变更事件并填充下拉框

在VB.NET中实现输入框文本变更时填充下拉框

针对你提供的带runat="server"属性的输入框(ID为txtPositionDt),这里提供两种实用实现方案:

方案一:服务器端回发填充(整页刷新)

通过触发页面回发,在VB.NET后台代码中处理下拉框填充逻辑。

1. 修改输入框,添加回发触发事件

给输入框添加onchange事件,调用ASP.NET内置的__doPostBack方法触发回发:

<input ID="txtPositionDt" runat="server" class="style247" name="txtPositionDt" size="10" tabindex="0" type="text" autocomplete="off" 
       onchange="__doPostBack('txtPositionDt', '')" />

2. 后台VB.NET代码处理回发

在页面Page_Load事件中判断回发来源,执行下拉框填充逻辑:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' 判断是否为txtPositionDt触发的回发
    If IsPostBack AndAlso Request.Form("__EVENTTARGET") = "txtPositionDt" Then
        FillTargetDropDown()
    End If
End Sub

' 下拉框填充逻辑
Private Sub FillTargetDropDown()
    ' 假设目标下拉框的服务器端ID为ddlTarget
    ddlTarget.Items.Clear()
    
    ' 示例:静态添加选项(实际替换为数据库查询逻辑)
    ddlTarget.Items.Add(New ListItem("选项1", "1"))
    ddlTarget.Items.Add(New ListItem("选项2", "2"))
    
    ' 数据库查询示例(替换为你的连接字符串和SQL语句)
    ' Using conn As New SqlConnection("你的数据库连接字符串")
    '     conn.Open()
    '     Dim cmd As New SqlCommand("SELECT OptionText, OptionValue FROM YourTable WHERE PositionDate = @Date", conn)
    '     cmd.Parameters.AddWithValue("@Date", txtPositionDt.Value)
    '     Dim reader As SqlDataReader = cmd.ExecuteReader()
    '     ddlTarget.DataTextField = "OptionText"
    '     ddlTarget.DataValueField = "OptionValue"
    '     ddlTarget.DataSource = reader
    '     ddlTarget.DataBind()
    ' End Using
End Sub

方案二:AJAX无刷新填充(推荐)

避免整页刷新,通过前端AJAX调用后台WebMethod获取数据,动态填充下拉框。

1. 前端HTML与JS代码

引入jQuery(若页面未引入),编写输入框变更事件的AJAX逻辑:

<!-- 引入jQuery -->
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script>
    $(function() {
        // 监听输入框文本变更事件
        $("#txtPositionDt").on("change", function() {
            var selectedDate = $(this).val();
            // 发起AJAX请求
            $.ajax({
                type: "POST",
                url: "你的页面文件名.aspx/GetDropDownOptions",
                data: JSON.stringify({ targetDate: selectedDate }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(res) {
                    var ddl = $("#ddlTarget");
                    ddl.empty();
                    // 遍历返回数据,添加下拉选项
                    $.each(res.d, function(idx, item) {
                        ddl.append($("<option>").val(item.Value).text(item.Text));
                    });
                },
                error: function(xhr, status, err) {
                    console.error("获取下拉选项失败:" + err);
                }
            });
        });
    });
</script>

<!-- 目标下拉框(需带runat="server") -->
<select ID="ddlTarget" runat="server" class="stylexxx"></select>

2. 后台VB.NET WebMethod代码

添加静态WebMethod用于返回下拉框数据:

Imports System.Web.Services

Partial Class 你的页面类名
    Inherits System.Web.UI.Page

    <WebMethod()>
    Public Shared Function GetDropDownOptions(targetDate As String) As List(Of ListItem)
        Dim options As New List(Of ListItem)()
        
        ' 示例:根据日期生成选项(实际替换为数据库查询逻辑)
        options.Add(New ListItem($"[{targetDate}] 选项A", "A"))
        options.Add(New ListItem($"[{targetDate}] 选项B", "B"))
        
        ' 数据库查询示例
        ' Using conn As New SqlConnection("你的数据库连接字符串")
        '     conn.Open()
        '     Dim cmd As New SqlCommand("SELECT OptionText, OptionValue FROM YourTable WHERE PositionDate = @Date", conn)
        '     cmd.Parameters.AddWithValue("@Date", targetDate)
        '     Dim reader As SqlDataReader = cmd.ExecuteReader()
        '     While reader.Read()
        '         options.Add(New ListItem(reader("OptionText").ToString(), reader("OptionValue").ToString()))
        '     End While
        ' End Using
        
        Return options
    End Function
End Class

内容的提问来源于stack exchange,提问作者VimalSingh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:53:30