【问题标题】:How to pass parameters in where clause to static web method in c# asp.net using jquery/ajax?c# - 如何使用jquery/ajax将where子句中的参数传递给c#asp.net中的静态web方法?
【发布时间】:2019-09-16 07:11:52
【问题描述】:

我需要使用ajaxwhere 子句中将label 值传递给static 'web 方法'。我正在创建一个结构化图表,我只需要显示当前登录的用户的数据和子数据。 我不知道如何将 asp 控件值传递给静态方法。我什至尝试从 jqueryajax 传递标签值,但是,我得到了 undefined error。请帮助解决这个错误 我的代码

       [WebMethod]
        public static List<object> GetChartData(string name)
        {
        string query = "SELECT * ";
        query += " from abc  where ID=@ID";
        string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(constr))
        {

            using (MySqlCommand cmd = new MySqlCommand(query))
            {
              cmd.Parameters.AddWithValue("@ID",name);
              ----i am getting error on lblsubid----

                List<object> chartData = new List<object>();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                con.Open();
                using (MySqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        chartData.Add(new object[]
                        {
                     sdr["ID"], sdr["Name"], sdr["Emailid"] ,sdr["SubId"] 
                        });
                    }
                }
                con.Close();
                return chartData;
                 }
                }
               }

前端代码:-

          google.load("visualization", "1", { packages: ["orgchart"] });
          google.setOnLoadCallback(drawChart);
          function drawChart() { 
         var url = window.location.pathname;
        var action = url.substr(url.lastIndexOf('/') + 1);
        document.getElementById("lblsubid").innerHTML = action;          
        $.ajax({
            type: "POST",
            url: "Test.aspx/"+action+"GetChartData",
            data: '{name: "' + action + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (r) {                 
                var data = new google.visualization.DataTable();
                data.addColumn('string', 'Entity');
                data.addColumn('string', 'ParentEntity');
                data.addColumn('string', 'ToolTip');
                for (var i = 0; i < r.d.length; i++) {
                    var employeeId = r.d[i][0].toString();
                    var employeeName = r.d[i][1];
                    var designation = r.d[i][2];
                    var reportingManager = r.d[i][3] != null ? r.d[i][3].toString() : '';
                    data.addRows([[{
                        v: employeeId,
                        f: employeeName + '<div>(<span>' + designation + '</span>)</div>'
                    }, reportingManager, designation]]);
                }
                var chart = new google.visualization.OrgChart($("#chart")[0]);
                chart.draw(data, { allowHtml: true });

            },
            failure: function (r) {
                alert(r.d);
            },
            error: function (r) {
                alert(r.d);
            }

            });
             }
          </script>
             <div id="chart">
             </div>
              <asp:Label runat="server" ID="lblsubid"></asp:Label>

【问题讨论】:

  • 你必须返回一个字符串。至于标签……我没有看到标签。研究页面方法。
  • 你的label 在你的 AJAX 调用中在哪里?您需要为标签设置一个值,然后将其发送到您的 WebMethod。

标签: javascript c# jquery asp.net ajax


【解决方案1】:

在您对 WebMethod 的 ajax 调用中,您没有传递任何内容

你需要传入你的标签文本

 data: '{}', -- your label value here

在你的方法中:(添加参数)

[WebMethod]
 public static List<object> GetChartData(string LabelText)

在构建查询时:

cmd.Parameters.AddWithValue("@ID",LabelText);

【讨论】:

  • 谢谢大家的帮助..我是通过使用会话做到的
猜你喜欢
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
相关资源
最近更新 更多