【问题标题】:Access ID from client to server side从客户端到服务器端的访问 ID
【发布时间】:2016-11-16 21:51:54
【问题描述】:

有两个日历,一个下拉菜单和一个网格视图和按钮。现在我尝试在服务器端访问这些 ID

     <asp:DropDownList ID="regiondrop" runat="server" AutoPostBack="True" 
    onselectedindexchanged="regiondrop_SelectedIndexChanged">
    </asp:DropDownList>
 <input  ID="fromdate" value="dd/mm/yyyy" runat="server" clientidmode="static" />
  <input  ID="todate" value="dd/mm/yyyy" runat="server" clientidmode="static" />
<input type="button" id="search_data"    class="sear_btn"  value="Search Data"  />

和网格视图

现在我尝试在页面上显示网格视图

为此我试试这个

<script type="text/javascript">
 $(function () {

         var fromdate = $('[ID*=fromdate]').val();
         var todate = $('[ID*=todate]').val();
         var regiondrop = $('[ID*=regiondrop] option:selected')[0].value;
         var GridView1 = $('[ID*=GridView1]');
         var obj = {};
         obj.fromdate = todate ;
         obj.todate = todate ;
         obj.regiondrop = regiondrop ;
         obj.GridView1 =GridView1 ;
         Getdataa(obj);
         return false;

 });
 function Getdataa(obj) {
     //alert('1');
     $.ajax({
         type: "POST",
         url: "WebForm1.aspx/search_data",
         data: "{'fromdate':'" + fromdate + "','todate':'" + todate + "','regiondrop':'" + regiondrop + "','GridView1':'" + GridView1 + "'}",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         async: true,
         cache: false,
         success: function (result) {
             $("#GridView1").empty();
             if(data.d.length>0){
             $("#GridView1").append(
             "<tr><th>OName</th><th>RegNo</th>><th>Speed</th>");

             for(var i=0;i<data.d.length;i++){
             $("#GridView1").append("<tr><td>" + 
             data.d[i].OName + "</td> <td>" + 
             data.d[i].RegNo + "</td> <td>" + 
             data.d[i].Speed + "</td></tr>");
                }
            }   
         },
         error: function (error) {
             alert("error");

         }
     });
 }

对于访问 ID,我尝试获取 ID,然后在 webmethod 函数中传递这些 ID,例如 ths

[WebMethod]
    public static string search_data(DateTime fromdate, DateTime todate, string regiondrop)
    {

        try
        {

            DateTime frmdate = 
           Convert.ToDateTime(fromdate.Value.Trim().Split('T')[0]);
            DateTime tdatee = 
            Convert.ToDateTime(todate.Value.Trim().Split('T')[0]);
            string regionvalue = Convert.ToString(regiondrop.SelectedValue);
            TrackDataEntities1 ts = new TrackDataEntities1();

            // here dq code is like this var dq= and here i write LINQ query  
            //i don't paste because of long query 
            GridView1.DataSource = dq;
            GridView1.DataBind();

        }
        catch (Exception)
        {
            GridView1.Visible = false;
            Label4.Text = ("No Data");

        }

    }

更新 LINQ 查询

            var dq = (from vv in ts.tblVe
                      join rv in ts.tblRe on vv.ID equals rv.ID
                      join re in ts.tblReg on rv.RID equals re.RID
                      where
                      re.Region == regiondrop
                      && re.StartDate <= fromdate
                      && re.EndDate >= todate
                      orderby
                      vv.ID,
                      rv.OwnerName
                      select new
                      {
                          ID = vv.ID,
                          oname = rv.OName,
                          RegNo = rv.RegNo,
                          MaxSpeed = rv.Speed,


                      }).ToList();

当我尝试这个显示错误时

错误 2“System.DateTime”不包含“Value”的定义,并且找不到接受“System.DateTime”类型的第一个参数的扩展方法“Value”(您是否缺少 using 指令或程序集参考?)

错误 3“System.DateTime”不包含“Value”的定义,并且找不到接受“System.DateTime”类型的第一个参数的扩展方法“Value”(您是否缺少 using 指令或程序集参考?)

错误 4 'string' 不包含 'SelectedValue' 的定义,并且找不到接受“string”类型的第一个参数的扩展方法 'SelectedValue'(您是否缺少 using 指令或程序集引用?)

错误 5 非静态字段、方法或属性“chart_project.WebForm1.GridView1”需要对象引用

错误 8 非静态字段、方法或属性“chart_project.WebForm1.Label4”需要对象引用

任何解决方案

【问题讨论】:

  • 要在服务器端访问 html id,您应该使用 var date= Request.Form["fromdate"];
  • 此显示错误..错误 2 非静态字段、方法或属性“System.Web.UI.Page.Request.get”需要对象引用

标签: asp.net datetime calendar server client-server


【解决方案1】:

“System.DateTime”不包含“Value”的定义,也没有 扩展方法“值”接受类型的第一个参数 可以找到“System.DateTime”(您是否缺少 using 指令或 程序集参考?)

您在 WebMethod 中将 fromdate 作为 DateTime 传递,所以为什么要将其视为 TextBox 并尝试使用 Value 属性获取数据并再次将其转换为 DateTime。与todate 相同。

'string' 不包含 'SelectedValue' 的定义,并且没有 扩展方法“SelectedValue”接受类型的第一个参数 可以找到“字符串”(您是否缺少 using 指令或 汇编参考?)

对于regiondrop,它是一个字符串变量而不是下拉列表,因此您不能为此使用SelectedValue 属性。

所以这些变量你可以直接使用。

错误 5 非静态字段需要对象引用, 方法或属性 'chart_project.WebForm1.GridView1'

错误 8 非静态字段需要对象引用, 方法或属性 'chart_project.WebForm1.Label4'

Gridview 和 Label 是非静态字段,不能在静态方法中调用。而且您在成功的 ajax 中绑定了您的 gridview,所以为什么需要在 WebMethod 中绑定它。只需返回您要与 gridview 绑定的数据集,并在 ajax 方法中绑定即可。

可以帮助你Reference Link

更新

    [WebMethod]
        public static string search_data(DateTime fromdate, DateTime todate, string regiondrop)
        {
           //Using your context
            var dq = (from vv in ts.tblVe
                          join rv in ts.tblRe on vv.ID equals rv.ID
                          join re in ts.tblReg on rv.RID equals re.RID
                          where
                          re.Region == regiondrop
                          && re.StartDate <= fromdate
                          && re.EndDate >= todate
                          orderby
                          vv.ID,
                          rv.OwnerName
                          select new
                          {
                              ID = vv.ID,
                              oname = rv.OName,
                              RegNo = rv.RegNo,
                              MaxSpeed = rv.Speed,


                          }).ToList();
System.Web.Script.Serialization.JavaScriptSerializer jSearializer = 
                   new System.Web.Script.Serialization.JavaScriptSerializer();
            return jSearializer.Serialize(dq);
        }

然后在你的 Ajax 方法中:

function Getdataa(obj) {
     //alert('1');
     $.ajax({
         type: "POST",
         url: "WebForm1.aspx/search_data",
         data: "{'fromdate':'" + fromdate + "','todate':'" + todate + "','regiondrop':'" + regiondrop + "'}",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         async: true,
         cache: false,
         success: function (result) {
             $("#GridView1").empty();
             if(result.d.length>0){
             $("#GridView1").append(
             "<tr><th>OName</th><th>RegNo</th>><th>Speed</th>");

             for(var i=0;i<result.d.length;i++){
             $("#GridView1").append("<tr><td>" + 
             result.d[i].OName + "</td> <td>" + 
             result.d[i].RegNo + "</td> <td>" + 
             result.d[i].Speed + "</td></tr>");
                }
            } 
           else{
             $("#GridView1").hide();
             $("#Lable1").text("No Data");
           }  
         },
         error: function (error) {
             alert("error");

         }
     });
 }

【讨论】:

  • 那么我如何在 linq 中返回数据集?
  • 否则返回您的列表。
  • 我试试这个 .. DataSet ds = new DataSet(); dq(ds);返回 ds;但这显示错误..*“dq”是一个“变量”,但用作“方法”*无法将类型“System.Data.DataSet”隐式转换为“字符串”@Rojalin Sahoo
  • 是的,根据您的代码var dq,它是一个变量,您不能像方法一样使用它。因此尝试将列表返回为 List&lt;Class&gt; Detail = new List&lt;Class&gt;(); return Detail; 。这可能会帮助你codeproject.com/Tips/775585/Bind-Gridview-using-AJAX
  • 当我尝试这个时.. List detail=new List();退货详情;这显示错误.. 错误 1 ​​无法将类型“System.Collections.Generic.List”隐式转换为“System.Data.DataTable”
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 2012-12-07
  • 2017-08-13
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多