super_user Ответов: 1

Отображение сообщения при отсутствии данных


У меня есть webmethod и jquery для отображения диаграммы во всплывающем окне для этого .. поэтому, когда я нажимаю на кнопку поиска, когда есть данные, то работаю нормально, но когда нет данных, я хочу отобразить сообщение "Нет данных" в метке .. а также pop не должен отображаться, когда нет данных, как я это делаю ..

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

проверьте я попробую этот код

[WebMethod]
       public static string GetVo(DateTime fromdate, DateTime todate, string region)
       {

           string data2 = "[";
           try
           {
               T1 DB = new T1();
               var rea = (from vv in DB.tblVeh
                          join rv in DB.tblRen vv.MID equals rv.ID
                          join re in DB.tblRei on rv.RID equals re.RID
                          where
                          re.Region == region
                          && (vv.Name != "")
                          && re.StartDate >= fromdate
                          && re.EndDate <= todate
                          group vv by vv.Name 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();
           }
           return data2;

       }
и jquery
<script type="text/javascript">
               var strarr = [["h", 9], ["t", 3], ["y", 1],["y (bunch)", 1]];
               $(function () {
                   $('[ID*=search_data]').on('click', function () {
                       var fromdate = $('[ID*=fromdate]').val();
                       var todate = $('[ID*=todate]').val();
                       var region = $('[ID*=regiondrop] option:selected')
                      [0].value;
                       var obj = {};
                       obj.fromdate = fromdate;
                       obj.todate = todate;
                       obj.region = region;
                       Getdata(obj);
                       return false;
                   });
               });
               function Getdata(obj) {
                   $.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) {
                           strarr = result.d;
                           var myarr = strarr;
                           Drewchart(myarr);
                       },
                       error: function (error) {
                           alert("error");
                           //$("#divcontainer").hide();
                       }
                   });
               }
               function Drewchart(result) {
                   console.log(JSON.stringify(result, null, 2));
                   $('#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: JSON.parse(result)
                       }]

                   });
               }
    </script>

   <div id="divcontainer" style="display: none" align = "center">
         <div id="container"  class="cont_charts">

       </div>


и для всплывающих окон


<script type="text/javascript" >
        $(function () {
            $("#divcontainer").dialog({
                modal: true,
                autoOpen: false,
                title: "Chart",
                width: 600,
                height: 450
            });
            $("#search_data").click(function () {
                $("#divcontainer").dialog('open');

            });
        });
   </script>

1 Ответов

Рейтинг:
6

F-ES Sitecore

success: function (result) {
    var myData = JSON.parse(data.d);
    if (myData.length == 0)
    {
        // do something to show a message
        return;
    }
    strarr = result.d;
    var myarr = strarr;
    Drewchart(myarr); // here you could pass in myData and drop the JSON.parse in this method
},


для тех случаев, когда в вашем действии нет данных

T1 DB = new T1();
               var rea = (from vv in DB.tblVeh
                          join rv in DB.tblRen vv.MID equals rv.ID
                          join re in DB.tblRei on rv.RID equals re.RID
                          where
                          re.Region == region
                          && (vv.Name != "")
                          && re.StartDate >= fromdate
                          && re.EndDate <= todate
                          group vv by vv.Name into g
                          select new
                          {
                              Name = g.Key,
                              cnt = g.Select(t => t.Name).Count()
                          }).ToList();
     if (rea.Any())
     {
         // rea is already a List, you don't have to keep using ToList
         data2 += rea.Select(x => @"[""" + x.Name + @"""," + x.cnt + "]")
         .Aggregate((a, b) => a + "," + b);
    }
    data2 += "]";


super_user

когда я пробую это, это показывает это.. проверьте пожалуйста https://media.giphy.com/media/26gJznDimxRyV0zi8/giphy.gif

F-ES Sitecore

Это ошибка в вашем коде .net и не имеет ничего общего с вашим первоначальным вопросом. Если вы получаете исключения, а затем публикуете соответствующие детали в виде текста, этот анимированный gif вообще не поможет.

super_user

ошибка такая же: "последовательность не содержит элементов", это означает, что данных нет.. Итак, как я справляюсь с этим, когда нет данных, то я хочу показать сообщение no break the code

F-ES Sitecore

Я обновил свой ответ

super_user

@F-ES Sitecore хорошо, я попробую ваш ответ.. я пробую это .. успех: функция (результат) {
ВАР файл mydata = формат JSON.синтаксический анализ(результат.д);
if (myData. length == 0 && myData!= = null) {
$("#Label4").текст ("Нет данных")
вернуть;
}
strarr = результат. d;
var myarr = strarr;
Drewchart(myarr);
},
это не показывает никакой ошибки, но это также не показывает никакого сообщения.

F-ES Sitecore

Использовать отладчик, чтобы увидеть, что в результате.D и что в файл mydata и идти оттуда. Кроме того, вы хотите проверить наличие null перед использованием ссылки

if (myData!=null && myData. length == 0) {

super_user

это показать ошибку сейчас .Uncaught TypeError: не удается прочитать свойство 'length' undefined

F-ES Sitecore

Это показывает, что то, что возвращается, не разбирается на массив. Вам нужно использовать отладчик, чтобы точно увидеть, что возвращается, и написать код для обработки этого, нет смысла кодировать "вслепую", ставить случайный синтаксический анализ и т. д., Не зная данных, которые вы получаете. Это может быть вам нужны оценки, а не в формате JSON.разобрать

var myData = eval(result. d);

Я не знаю, поскольку я не знаю, что ваш метод возвращает в различных сценариях, посмотрите на вкладку networking инструментов Вашего браузера и используйте ключевое слово "debugger" в ваших сценариях.

super_user

вы проверили мой недавний комментарий?

super_user

когда я устанавливаю отладчик adn когда я проверяю f12 это шоу похоже на то где нет data..http://oi68.tinypic.com/2ic2t75.jpg а там, где есть данные, это показывают вот так .. http://oi68.tinypic.com/2rxh2wx.jpg

F-ES Sitecore

Не совсем уверенный в том, что там происходит, mydata явно является массивом из вашего отладочного вывода .длина должна работать нормально.

super_user

ладно, теперь это сработало.. успех: функция (результат) {

если(результат !==нуль &амп;&амп; результат.длина > 0){
strarr = результат. d;
var myarr = strarr;
$("#divcontainer"). dialog ('open');
Drewchart(myarr);
}
ещё{
$("#&ЛТ;%=Label4.Идентификатора ClientID%и GT;").текст ("Нет данных")
$("#tabledata"). скрыть();
$("#divcontainer"). dialog ('hide');
}
} ,

когда я запускаю этот стол-скрыть и сообщения показывают, но поп-дисплей, где нет данных, так как я скрываю выскочить, когда я добавить строку $("#divcontainer").диалоговое('скрыть'); это шоу на jQuery ошибка.мин.ДШ:2 непойманные ошибка: нет такой способ "спрятать", например, диалогового виджета

super_user

когда я устанавливаю отладчик adn когда я проверяю f12 это шоу похоже на то где нет data..http://oi68.tinypic.com/2ic2t75.jpg а там, где есть данные, это показывают вот так .. http://oi68.tinypic.com/2rxh2wx.jpg