根据警报框中的区域数据

时间:2016-06-23 05:39:55

标签: javascript c# jquery linq sql-server-2008

我尝试将SQL转换为LINQ查询..并通过LINQ查询我尝试获取data2中的数据有下拉2日历..并且在该下拉列表中有区域所以当我选择区域和日期然后我尝试获取data2中的数据,例如在英国有3个PSB和7个MV。

 SELECT distinct count(VName) as data,
   tabvv.VName,
   tabrv.ID,
   FFID,
   oname,
   regno,
   FROM  tabrv
   join  tabre on tabre .RegionID= tabrv.RegionID
   join tabvv on tabvv.ID=tabrv.ID
   WHERE Region = 'UK' AND
   StartDate >= '2014-02-01 00:00:00.000' AND
   EndDate <= '2014-02-28 23:59:59.000'
   group by
   tabvv.VName,
   tabrv.ID,
   FFID,
   oname,
   regno

数据库中的数据:

data     VName  ID  FFID    oname    regno  
   1        PSB     22  106      ASB     AY-50  
   1        MV      23  102     ASD     AS-18   
   1                24  104     ASFi    TM-82   
   1                25  1072    AED     AU-06   
   1        PSB     26  104     ADF    AZ-23    
   1        MV      27  10      AEF    UB-21    
   1                28  1024    SFS    AE-49    
   1                29  101     QWER   AE-53    
   1                30  109     QWE    AV-63    
   1        MV      31  103    VVBV     AL-94   
   1        MV      32  125    QWEE    AY-36    
   1                33  1292   BGGH    AWF-98
   1                34  1038   WEQWE    WN-81   
   1        MV      35  105    QWEWQ    AQ-98   
   1                36  109    QWE      AWT-88  
   1                37  01     UIO     AX-84    
   1                38  14     GH      AK-18    
   1        MV      39  09     GHJ     XL-13    
   1                40  1025   HFGHL    XW-78   
   1        MV      41  120    HJK     AXY-4    
   1       PSB      42  100    DG     A-18

在上面的数据中,当有vname然后写入1时,但在上面的数据中,某些列中没有Vname,但是提到了1,所以我如何纠正这个。

警告框中的数据(我转换为LINQ的SQL查询):

[WebMethod]
 public static string GetVo(int ID)
 {
string data2 = "[";
   try
   {
   string fdate = fromdate.Value.Trim().Split('T')[0];
   string tdate = todate.Value.Trim().Split('T')[0];
   T1 DB = new T1();
   var rea = (from rv in DB.tabrv
   join Reg in DB.tabre on rv.RegionID equals Reg.RegionID
  join vv in DB.tabvv on rv.ID equals vv.ID
  where Reg.Region=ID
  && !(vv.VName == "")
  && Reg.StartDate == Convert.ToDateTime(fromdate) &&    
  Convert.ToDateTime(Reg.EndDate)
  group vv by vv.VName into g
  select new
  {
  Name = g.Key,
  cnt = g.Select(t => t.Name).Count()
  }).ToList();
  data2 += rea.ToList().Select(x => "['" + x.Name + "'," + x.cnt + "]")
  .Aggregate((a, b) => a + "," + b);
  data2 += "]";
  }
  catch (Exception ex)
  {
  throw new Exception();
  System.Web.HttpContext currentContext = System.Web.HttpContext.Current;
  currentContext.Response.Write("<script>alert('" +  
  currentContext.Server.HtmlEncode(ex.ToString()) + "')</script>");
  }
   return data2;
  }
   }

当我构建上面的函数时,这显示错误

错误6运营商'&amp;&amp;'不能应用于'int'和'bool'类型的操作数

错误5非静态字段,方法或属性'abc.WebForm1.todate'

需要对象引用

错误4非静态字段,方法或属性'abc.WebForm1.fromdate'

需要对象引用

错误7非静态字段,方法或属性'abc.WebForm1.fromdate'

需要对象引用

代码:

<asp:DropDownList ID="regiondrop" runat="server" AutoPostBack="True" 
 onselectedindexchanged="regiondrop_SelectedIndexChanged">
</asp:DropDownList>  
<asp:Label ID="Label1" runat="server" Text="From Date"></asp:Label> 
<input  ID="fromdate" value="mm/dd/yyyy" runat="server" ClientIDMode="static" />
<asp:Label ID="Label2" runat="server" Text="To Date"></asp:Label>
<input  ID="todate" value="mm/dd/yyyy" runat="server" ClientIDMode="static" />
<input type="button" ID="search_data" runat="server" class="sear_btn"  value="Search Data" OnServerClick="search_data_Click" />

我想在data2中使用这样的数据:

[[PSB,'3'],[MV,'7']]

3和7是因为我运行sql查询时数据中有3个PSB,因为MV是7

现在我像这样访问下拉列表

<script type="text/javascript">
$('#search_data').click(function () {
    $.ajax({
        type: "POST",
        url: "WebForm1.aspx/GetVo",
        data: JSON.stringify({ ID: $().val('#regiondrop') }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        cache: false,
        success: function (result) {

            alert(result.d);
            alert('u');
            //start
            strArray = result.d;
            var myarray = eval(strArray);


            $('#container').highcharts({
                chart: {
                    type: 'pie',
                    options3d: {
                        enabled: true,
                        alpha: 45
                    }
                },
                title: {
                    text: 'Contents of Highsoft\'s weekly fruit delivery'
                },
                subtitle: {
                    text: '3D donut in Highcharts'
                },
                plotOptions: {
                    pie: {
                        innerSize: 100,
                        depth: 45
                    }
                },
                series: [{
                    name: 'Delivered amount',
                    data: myarray
                }]
            });

            //end
        },
        error: function (error) {
            alert(error);
        }

    });
});

//  });

    </script>

我如何访问日历?

1 个答案:

答案 0 :(得分:0)

1。)对于您的第一个错误(错误6操作员&#39;&amp;&amp;&#39;不能应用于&#39; int&#39;和&#39; bool&类型的操作数#39)。在Where子句中,您有以下内容;

Convert.ToDateTime(Reg.EndDate)

这可能意味着类似

Convert.ToDateTime(Reg.EndDate) == Convert.ToDateTime(todate)

就像你处理startdate一样。 Convert.ToDateTime本身只返回一个DateTime,它不是真/假值,因此是错误。

2。)对于其他三个错误,我认为您必须将所有输入标记更改为asp:TextBox对象,因为代码中的名称无法访问标准输入标记。所以而不是;

<input ID="fromdate" value="mm/dd/yyyy" runat="server" ClientIDMode="static" />

你会有;

<asp:TextBox ID="fromdate" Text="mm/dd/yyyy" runat="server"/>

另一种方法是使用

访问值

Request.Form["fromdate"]