下拉列表将参数传递给 vb.net 中的 webmethod

Posted

技术标签:

【中文标题】下拉列表将参数传递给 vb.net 中的 webmethod【英文标题】:dropdownlist pass parameter to webmethod in vb.net 【发布时间】:2020-10-29 20:16:25 【问题描述】:

我用谷歌搜索了几天,但仍然无法找到解决方案。 我创建了 3 个 ASP 下拉列表,用户选择字符串后,将字符串传递给 webmethod 以在 VB.net 中进行 SQL 查询

谁能给我一些提示?

谢谢。

代码如下:

 function draw2CavitiesChart() 
            var options = 
                title: '2 Line VS Cavities',
                width: 1700,
                height: 700,
                //bar:  groupWidth: "95%" ,
                //curveType: 'function',
                //isStacked: true
                pointSize: 8,
                hAxis:  title: 'Date', format: 'M/d/yy' ,
                vAxis:  title: 'Total Cavities' ,
                //colors: ['blue'],
                legend:  position: "bottom" 
            ;
           

        var vs_SelectedLine1 = ddlSelectedLine1;
        var vs_SelectedLine2 = ddlSelectedLine2;
        var vs_SelectedLine3 = ddlSelectedLine3;
        
        $.ajax(
            type: "POST",
            url: "Chart.aspx/Get2CavitiesData",         
            date:  SelectedLine1: vs_SelectedLine1, SelectedLine2: vs_SelectedLine2, SelectedLine3: vs_SelectedLine3 ,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (r) 
                var data = google.visualization.arrayToDataTable(r.d);
                var chart = new google.visualization.LineChart($("#div2CavitiesChart")[0]);
                chart.draw(data, options);
            ,
            failure: function (r) 
                alert(r.d);
            ,
            error: function (r) 
                alert(r.d);
            
        );
    

和后面的代码: _ 公共函数 Get2CavitiesDate()

    Return (Me.ddlSelectedLine1.SelectedItem.ToString)
    Return (Me.ddlSelectedLine2.SelectedItem.ToString)
    Return (Me.ddlSelectedLine3.SelectedItem.ToString)

    Dim constring As String = ConfigurationManager.ConnectionStrings("LocalDBConnectionString").ConnectionString
    Dim chartData As New List(Of Object)()
    chartData.Add(New Object() "SelectedDate", "(SelectedLine1)", "(SelectedLine2)", "(SelectedLine3)")
    Using con As New SqlConnection(constring)
        Using cmd As New SqlCommand()
            cmd.CommandType = CommandType.StoredProcedure
            cmd.CommandText = "ChartReportDataTable"
            cmd.Connection = con
            con.Open()
            Using sdr As SqlDataReader = cmd.ExecuteReader()
                While sdr.Read()
                    chartData.Add(New Object() sdr("SelectedDate"), sdr("(SelectedLine1"), sdr("(SelectedLine2)"), sdr("(SelectedLine3)"))
                End While
            End Using
            con.Close()
            Return chartData
        End Using
    End Using

End Function

和 ASP:

【问题讨论】:

请同时显示 aspx 布局。 嗨 Salik,这是我的 asp 布局: 将 aspx 布局添加到问题中并将其格式化为代码。这样读是不可能的。 【参考方案1】:

您正在使用<asp:DropDownList>,因此在客户端JS 中访问它的方法是使用<%= ddlSelectedLine1.ClientID %>。所以像var vs_SelectedLine1 = document.getElementById('<%= ddlSelectedLine1.ClientID %>).value 这样的东西应该可以解决问题。

此外,您将无法访问代码隐藏中控件的值,因为正常的页面循环都不会执行,因此控件将从视图状态加载值。

在您的 JS 客户端 ajax 调用中,您的代码中有错字:

data: " 'SelectedLine1': '" + vs_SelectedLine1 + "', 'SelectedLine2': '" + vs_SelectedLine2 + "', 'SelectedLine3': '" + vs_SelectedLine3 + "' "

你的后端代码签名看起来像

public static <chartDataType> Get2CatvitiesDate(string SelectedLine1, string SelectedLine2, string SelectedLine3) ... <rest of your function >

我不知道你的后端方法的返回类型,但这应该可以帮助你。

【讨论】:

我放了.ClientID,但结果似乎相同,脚本可以从下拉列表中看到该值,但无法检索并且用户选择该值并且在用户按下按钮后无法触发该功能,会请检查我上传的jpg(我不知道如何在回复窗口中上传jpg)dropbox.com/s/18y0yj5922x44cr/getvalue1.JPG?dl=0和dropbox.com/s/u8rvwujriak4rcr/getvalue2.JPG?dl=0谢谢。 嗨Salik,返回类型是字符串,但是修改代码后还是一样的结果,从下拉列表中选择值后按钮没有触发, 如果您希望代码在下拉列表中的值更改时运行,那么您需要添加客户端 onchange 处理程序。

以上是关于下拉列表将参数传递给 vb.net 中的 webmethod的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 中的下拉列表上触发 jQuery 更改事件并将参数传递给 url 操作

将参数传递给 Django 中的 ListView

将参数传递给不同视图之间的显示模板

将参数传递给页面,数据不更新

在 ASP.NET C# 中使用 jQuery 将多个参数传递给 Web 方法

如何将参数传递给 SqlDataAdapter