super_user Ответов: 1

Возврат набора данных в linq


я пытаюсь вернуть данные в веб-методе с помощью linq .. а также привязываю представление сетки в jquery

Что я уже пробовал:

ОБНОВЛЕННЫЙ КОД

 <script type="text/javascript">

var strArray = "[['sfdsdfLi', 9],['Kiwsdfi', 3],['Mixesdfd nuts', 1],['Oranges', 6],['Grapes (bunch)', 1]]";
$(function () {
$('[ID*=search_data]').on('click', function () {
var from = $('[ID*=fromdate]').val();
var to = $('[ID*=todate]').val();
var reg = $('[ID*=regiondrop] option:selected')[0].value;
var obj = {};
obj.fdate = from;
obj.tdate = to;
obj.region = reg;
Getdata(obj);
return false;
});
});

$(function () {
$('[ID*=search_data]').on('click', 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.fdate = from;
obj.tdate = to;
obj.region = reg;
Getdataa(obj);
});
});

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>Owner Name</th><th>Reg No</th><th>Mileage Accumlation</th><th>MaxSpeed</th>");

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

}
});
}
function Getdata(obj) {
//alert('1');
$.ajax({
type: "POST",
url: "WebForm1.aspx/GetVo",
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (result) {

//alert(result.d);
//alert('2');
strarr = result.d;
var myarr = strarr;
Drewchart(myarr);
// alert(myarr);
// alert('3');

},
error: function (error) {
alert("error");

}
});
}

function Drewchart(result) {

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

});
}

webmthod

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

try
{

TrackDataEntities1 ts = new TrackDataEntities1();
var dq = (from vv in ts.tblVe
join rv in ts.tblReg on vv.ID equals rv.ID
join re in ts.tblRegi 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,
Speed = rv.Speed,
});

DataTable dt = new DataTable();
dt.Rows.Add(dq);
return dt;


}
catch (Exception)
{
throw new Exception();


}

}


это показывает ошибку

WebForm1. aspx: 70 Uncaught ReferenceError: regiondrop не определен
http://localhost:33578/WebForm1.aspx/GetVo не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера)

Karthik_Mahalingam

почему вам нужно преобразовать список в набор данных?

super_user

потому что я хочу отображать данные в gridview

Karthik_Mahalingam

вы также будете отображать список, он будет работать.

super_user

как

1 Ответов

Рейтинг:
8

OriginalGriff

Здесь есть две проблемы: первая заключается в том, что dq - это список<T> - благодаря вызову ToList в конце вашего Linq-и мы понятия не имеем, что это за список!
Можно преобразовать список< T> В DataTable, не зная, какой тип объекта он содержит: Преобразование списка в DataTable[^] делает это довольно красиво.
Затем вы можете создать набор данных и добавить к нему DataTable.

Во-вторых, ваш метод ожидает возврата строки - и нет простого преобразования из списка, DataTable или DataSet в строку. Таким образом, либо вам нужно пересмотреть тип возвращаемого метода, либо вы, вероятно, не хотите пытаться что-либо делать с DataTable или DataSet в любом случае!

Я не знаю, чего вы пытаетесь достичь здесь, поэтому я не могу сказать: "сделайте это, и все это сработает", - но это должно дать вам инструменты, чтобы разобраться в этом в вашем собственном уме.


super_user

я пытаюсь добиться отображения данных в girdview, поэтому для этого теперь я использую datatable вместо string..

OriginalGriff

Если все, что вы пытаетесь сделать, это установить источник данных GridView, то вам вообще не нужен набор данных или DataTable - вы можете использовать список напрямую, при условии, что ваш класс содержит значения, которые вы пытаетесь отобразить как свойства, а не поля.

super_user

в dq есть данные json теперь я пытаюсь отобразить эти данные в gridview

OriginalGriff

Возвращение анонимного типа из Linq в качестве универсального для списка сделало бы это трудным - если вы делаете это, то используйте ссылку, которую я дал, чтобы преобразовать его в DataTable и вернуть его, чтобы вы могли установить свой GridView.
Но если вы создаете список определенного внутреннего класса в вашем Linq, то просто используйте его вместо этого - это экономит время, память и усилия!

super_user

в dq при проверке данных is .. [0] = { ID = 1, OName = "Khan", RegNo = "AJ-24", Speed = "124" } [1] = { ID = 2, OName = "Шах", RegNo = "AL-91", Speed = " 95" }

OriginalGriff

Так что это должно работать непосредственно в GridView. DataSource - что происходит, когда вы пытаетесь?

OriginalGriff

И что же происходит?

super_user

из-за длинного JQUERY я публикую его в 2-3 частях, пожалуйста, проверьте ... поэтому я использую два webmethod на одной кнопке, когда я строю код и нажимаю на кнопку, то ничего не происходит, поэтому, когда я проверяю консоль по F12, это показывает " Uncaught ReferenceError: from is not defined"

OriginalGriff

Ну нет...это не так.
Посмотрите на первый раздел кода в вашем исходном вопросе, и первое определение функции определяет "от":

$('[ID*=search_data]'). on ('click', функция () {
var from = $('[ID*=fromdate]'). val();

Во втором нет определения, но есть использование:

$(функция () {
$('[ID*=search_data]'). on ('click', функция () {
var fromdate = $('[ID*=fromdate]'). val();
ВАР устареет = $('[ИД*=устареет]').вал();
var regiondrop = $('[ID*=regiondrop] option: selected') [0]. value;
var GridView1 = $('[ID*=GridView1]');
var obj = {};
параметр obj.fdate = с;

Разве эта последняя строка не должна быть:

obj. fdate = fromdate;

super_user

@OriginalGriff вы проверили мой вопрос об обновлении и ошибки?

super_user

@OriginalGriff проверьте мой обновленный код, о котором идет речь, Я обновляю webmethod и jquery, когда строю это шоу ошибок