2014-11-07 2 views
0

Может ли кто-нибудь помочь обнаружить, что я делаю неправильно ... Я новичок, поэтому я не мог быть потерян.Загрузка данных с сервера с помощью ajax, asp.net

Это то, что у меня есть:

класс обслуживания с этим Получ:

void OtvoriKonekciju() 
    { 
     uredjaj = new DBBL(); 
     uredjaj.entity.Connection.Open(); 
    } 
void ZatvoriKonekciju() 
    { 
     uredjaj.entity.Connection.Close(); 
     uredjaj.entity.Dispose(); 
    } 
public Uredjaji getUredjajPoID(int uredjajID) 
    { 
     OtvoriKonekciju(); 
     //stored procedure call 
     Uredjaji list = uredjaj.entity.stp_getUredjajPoID(uredjajID).SingleOrDefault(); 
     ZatvoriKonekciju(); 
     return list; 
    } 

frmUredjaji.aspx.cs:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public Uredjaji getUredjajByID(int uid) { 
    return uredjaj.getUredjajPoID(uid); 
} 

frmUredjaji.aspx:

$("table.dxgvTable_HDesk > tbody > tr").on("click", function() { 

      // Removes any detail rows from data grid (using free version of a DevExpress dgv control) 
      $("table.dxgvTable_HDesk > tbody > tr#details").remove(); 

      // Gets the id from hidden column (table uredjaji) 
      var idnumber = $(this).find(".refIDdata").text(); 

      //till here is ok, i get the text whic is ID 
      //(do i need, and how, to convert it to int somehow?) 

      $.ajax({ 
       type: "POST", 
       url: "frmUredjaji.aspx", 
       data: "{uid:idnumber}", 
       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       success: OnSuccess, 
       error: OnError 
      }); 

     }); 
     function OnSuccess(data) { 
      var temp = data.d.KlijentID; 
      alert("All OK, result: "+temp); 

     } 
     function OnError() { 
      alert("Error getting data!"); 
     } 

Я получаю колонки текста без проблем, но Аякса всегда возвращает сообщение об ошибке, указанное в OnError() .. Я предполагаю, что это что-то делать с AJAX и как я возвращать данные, а я нуб так, пожалуйста, помогите

EDIT: OK это то, что я пытался сделать ...

Когда я нажимаю на строку, я хочу показать дополнительные данные ниже (я хочу использовать ее на сетках со многими столбцами, которые не могут вписаться в мою ширину страницы. Что-то вроде строки, которая не поддерживается в бесплатной версии сетки данных DevExpress, которую я использую.

+0

изменить 'data:" {uid: idnumber} ",' to 'data: {uid: idnumber},' – rt2800

+0

@ rt2800 Не работает ... thanx anyway –

ответ

0

Eureka Я сделал это работать. Это немного грязный код, но он отлично работает. Не работал с объектами для меня (не мог понять это), поэтому я вернул только строку со всем, что я хотел, и это сработало.

C# (если заявления для полей, которые имеют значение NULL (еще исключение на значение NULL)

static UredjajiServis uredjaj = new UredjajiServis(); 
static KlijentServis klijent = new KlijentServis(); 
static NaruciteljServis narucitelj = new NaruciteljServis(); 
List<Lokacije> list; 
static LokacijeServis lokacije = new LokacijeServis(); 
[WebMethod] 
    public static string ubaciUredjaj(int uid) 
    { 

     Uredjaji temp = uredjaj.getUredjajPoID(uid); 
     string imeNarucitelja = string.Empty, prezimeNarucitelja = string.Empty, nazivKlijenta = string.Empty, nazivLokacije = string.Empty; 
     int klijentID = Convert.ToInt32(temp.KlijentID); 
     if (klijentID != 0) 
     { 
      Klijenti tempKlijent = klijent.getKlijentPoID(klijentID); 
      nazivKlijenta = tempKlijent.Naziv; 
     } 
     else 
     { 
      nazivKlijenta = "&nbsp;"; 
     } 
     int naruciteljID = Convert.ToInt32(temp.NaruciteljID); 
     if (naruciteljID != 0) 
     { 
      Narucitelji tempNarucitelj = narucitelj.getNaruciteljPoID(naruciteljID); 
      try 
      { 
       imeNarucitelja = tempNarucitelj.Ime; 
       prezimeNarucitelja = tempNarucitelj.Prezime; 
      } 
      catch 
      { 
       naruciteljID = 0; 
      } 
     } 
     else 
     { 
      imeNarucitelja = "&nbsp;"; 
      prezimeNarucitelja = "&nbsp;"; 
     } 


     int lokacijaID =Convert.ToInt32(temp.LokacijaID); 
     if (lokacijaID != 0) 
     { 
      Lokacije tempLokacija = lokacije.getLokacijuPoID(lokacijaID); 
      nazivLokacije = tempLokacija.Naziv; 
     } 
     else 
     { 
      nazivLokacije = "&nbsp;"; 
     } 

     string msg = string.Empty; 

     msg ="<div class='dwrapper'>"; 
     msg += "<div class='detailrow'><span class='dlabel'>Klijent: </span><span class='ddata'>" + nazivKlijenta + "</span></div>"; 
     msg += "<div class='detailrow'><span class='dlabel'>Naručitelj: </span><span class='ddata'>" + imeNarucitelja + " " + prezimeNarucitelja + "</span></div>"; 
     msg += "<div class='detailrow'><span class='dlabel'>Lokacija: </span><span class='ddata'>" + nazivLokacije + "</span></div>"; 
     msg += "</div>"; 

     return msg; 
    } 

HTML/JavaScript/JQuery

$("table.dxgvTable_HDesk > tbody > tr").not(':first').on("click", function() { 

     $("table.dxgvTable_HDesk > tbody > tr#details").remove(); 
     $("td", this).css("border-bottom", "2px solid #eee !important"); 
     $(this).after('<tr id="details" class="dxgvDataRow_HDesk"><td colspan="20" class="dxgv"><div class="detailswrapper"><span class="dloading">Učitavanje u toku ...<span></div></td><tr>'); 
     var idnumber = $(this).find(".refIDdata").text(); 

     $.ajax({ 
      type: "POST", 
      url: "/Poslovanje/frmUredjaji.aspx/ubaciUredjaj", 
      data: '{uid:"' + idnumber + '"}', 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: OnSuccess, 
      error: OnError 
     }); 

    }); 
    function OnSuccess(poruka) { 
     $(".detailswrapper").html('<!--<span class="dtitle">Dodatne informacije:</span>-->' + poruka.d); 
     $(".detailswrapper").fadeOut(0).fadeIn(1000); 
    } 
    function OnError(poruka) { 
     alert("Greska pri dobavljanju informacija!"); 
    } 

Спасибо за вашу помощь, ребята.

1

Вы можете попробовать ajax-вызов таким образом. Надеюсь, это поможет вам.

Попробуйте Ajax вызов таким способом,

var idnumber ="dataToBeSent";` 
var rawData={"uid":idnumber}; 
var finData= JSON.stringify(rawData); 
$.ajax({ 
      type: "POST", 
      url: "frmUredjaji.aspx", 
      data: finData, 
      dataType: "json", 

      success: OnSuccess, 
      error: OnError 
     }); 
+0

Я пытался выбрать «anythin» g "в указанном tr td, так как это столбец, представляющий идентификатор, и является только текстом. Я хотел передать его как ID, чтобы я мог подключить другие данные к этому id. Я выбираю только KlijentID только для тестирования. ... с этим тоже не сработало ... Я должен делать некоторые основные вещи неправильно ... –

+0

Да, я не понимаю, какие данные могут проходить, и в каком направлении и формат так много ошибок на моя сторона извините Я хочу передать значение, чтобы впоследствии использовать его в хранимой процедуре. Консольный выход: Не удалось загрузить ресурс: net :: ERR_CACHE_MISS –

+0

Проверьте URL-адрес, правильно или нет ???? – ajitksharma

Смежные вопросы