客户端到服务器端的访问ID
Access ID from client to server side
有两个日历,一个下拉列表和一个网格视图和按钮。现在我尝试在服务器端访问这些 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,就像这样
[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'
需要对象引用
任何解决方案
'System.DateTime' does not contain a definition for 'Value' and no
extension method 'Value' accepting a first argument of type
'System.DateTime' could be found (are you missing a using directive or
an assembly reference?)
您在 WebMethod 中将 fromdate
作为 DateTime 传递,所以为什么要将其视为 TextBox 并尝试使用 Value 属性获取数据并再次将其转换为 DateTime。与 todate
.
相同
'string' does not contain a definition for 'SelectedValue' and no
extension method 'SelectedValue' accepting a first argument of type
'string' could be found (are you missing a using directive or an
assembly reference?)
对于 regiondrop
,它是一个字符串变量而不是下拉列表,因此您不能为此使用 SelectedValue
属性。
所以这些变量你可以直接使用。
Error 5 An object reference is required for the non-static field,
method, or property 'chart_project.WebForm1.GridView1'
Error 8 An object reference is required for the non-static field,
method, or property 'chart_project.WebForm1.Label4'
Gridview 和Label 是非静态字段,无法在静态方法中调用。而且您在 ajax 中成功绑定了您的 gridview,所以为什么您需要在 WebMethod 中绑定它。只需 return 您想要与 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");
}
});
}
有两个日历,一个下拉列表和一个网格视图和按钮。现在我尝试在服务器端访问这些 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,就像这样
[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'
需要对象引用任何解决方案
'System.DateTime' does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'System.DateTime' could be found (are you missing a using directive or an assembly reference?)
您在 WebMethod 中将 fromdate
作为 DateTime 传递,所以为什么要将其视为 TextBox 并尝试使用 Value 属性获取数据并再次将其转换为 DateTime。与 todate
.
'string' does not contain a definition for 'SelectedValue' and no extension method 'SelectedValue' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
对于 regiondrop
,它是一个字符串变量而不是下拉列表,因此您不能为此使用 SelectedValue
属性。
所以这些变量你可以直接使用。
Error 5 An object reference is required for the non-static field, method, or property 'chart_project.WebForm1.GridView1'
Error 8 An object reference is required for the non-static field, method, or property 'chart_project.WebForm1.Label4'
Gridview 和Label 是非静态字段,无法在静态方法中调用。而且您在 ajax 中成功绑定了您的 gridview,所以为什么您需要在 WebMethod 中绑定它。只需 return 您想要与 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");
}
});
}