2015-08-27 2 views
0

Я совершенно не знаком с mvc.net nhibernate и программированием, что я пытаюсь сделать, это запросить с помощью ajax-запроса ... у меня есть две страницы ... первая страница - это соединение к одной таблице в sql-сервере, а следующая страница подключена к другой таблице ... эти две таблицы связаны с внешним ключом ... на первой странице будут отображаться записи данных jquery datatable из первой таблицы, и у нее есть ссылка, называемая view, когда я нажимаю на него, он направит меня на другой контроллер/страницу, на которой будут отображаться все данные dcatable dcatable из другой таблицы db. Также мой вопрос: как я могу запросить следующую таблицу (страницу), когда я нажимаю на просмотр (первая страница/таблица)? Я хочу показать определенные записи ... что я должен пройти? Я действительно запутался. Где-то моя классная модель:запрос jquery и mvc.net

public class Pybkhdr : NhibernateModel, IMcDataParameter 
{ 
    public virtual Guid ID { get; set; } 
    public virtual string PayeeCode{ get; set; } 
    public virtual string PayeeName { get; set; } 
    public virtual DateTime PaymentDate { get; set; } 
    public virtual string BankName { get; set; } 
    public virtual string FileName { get; set; } 
    public virtual string FileStatus { get; set; } 
    public virtual int TotalRecord { get; set; } 
    public virtual decimal TotalAmount { get; set; } 
    public virtual string HashTotal { get; set; } 
    public virtual int Acti { get; set; } 
    public virtual string Crid { get; set; } 
    public virtual DateTime Crdt { get; set; } 
    public virtual string Lmid { get; set; } 
    public virtual DateTime Lmdt { get; set; } 
} 

public class Pybkdtl : NhibernateModel, IMcDataParameter 
{ 
    public virtual Guid ID { get; set; } 
    public virtual Guid PybkhdrId { get; set; } 
    public virtual int SequenceNo{get; set;} 
    public virtual string CustomerName { get; set; } 
    public virtual string Icno { get; set; } 
    public virtual decimal Amount { get; set; } 
    public virtual string AccountNo { get; set; } 
    public virtual string ReferenceNo { get; set; } 
    public virtual string TransactionRef { get; set; } 
    public virtual string MobileNo { get; set; } 
    public virtual string Channel { get; set; } 
    public virtual DateTime TransactionDate { get; set; } 
    public virtual string TransactionStatus { get; set; } 
    public virtual int Acti { get; set; } 
    public virtual string Crid { get; set; } 
    public virtual DateTime Crdt { get; set; } 
    public virtual string Lmid { get; set; } 
    public virtual DateTime Lmdt { get; set; } 

вид:

@using Cp.Controllers 
 
@using ld.Http 
 
@{ 
 
    ViewBag.Title = "Bank Payment Listing"; 
 
    Layout = Request.IsAjaxRequest() ? "" : "~/Views/Shared/_DpLayout.cshtml"; 
 
} 
 
<style> 
 
    .displaynone { 
 
     display: none; 
 
    } 
 
</style> 
 
@Html.Raw(ViewBag.Script) 
 
<fieldset> 
 
    <div> 
 
     <table class="table1pxForDt" style="width:100%"> 
 
      <tr> 
 
       <td> 
 
        Approved - Pending payment Approved<br /> 
 
        Error - One or more matching having problem<br /> 
 
        Match - All transaction match<br /> 
 
        New - only upload no do any matching<br /> 
 
        Unmatch - One or more transaction cannot match 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </div> 
 
    <div style="text-align: left;"> 
 
     <div style="text-align: right;"> 
 
      <input type="button" onclick="BackHomePage()" value="Back" /> 
 
      <input type="button" name="btnupload" id="btnupload" value="Upload New File" /> 
 
     </div> 
 
     Search:<input value="" id="SearchValue" onkeydown="if (EnterSearch('SearchValue', event)) { $('#btnSearch').click(); }" /> 
 
     Field:<select id="SearchType" style="margin-right:20px;"> 
 
        <option value="FileName" selected="selected">File Name</option> 
 
        <option value="BankName">Bank</option> 
 
       </select> 
 
     Status : <select id="SearchStatus"> 
 
        <option value="">-- Select --</option> 
 
        <option value="@BankPaymentController.PayFileStatus.Approved">Approved</option> 
 
        <option value="@BankPaymentController.PayFileStatus.Error">Error</option> 
 
        <option value="@BankPaymentController.PayFileStatus.Match">Match</option> 
 
        <option value="@BankPaymentController.PayFileStatus.New">New</option> 
 
        <option value="@BankPaymentController.PayFileStatus.Unmatch">Unmatch</option> 
 
       </select> 
 
     <input type="button" id="btnSearch" name="btnSearch" value="Search" /> 
 
     <table class="table1pxForDt" id="dtbankpayheader" style="width:100%"> 
 
      <thead> 
 
       <tr> 
 
        <th>Status</th> 
 
        <th>Upload Date</th> 
 
        <th>File Name</th> 
 
        <th>Bank</th> 
 
        <th>Upload By</th> 
 
        <th>filepath</th> 
 
        <th>summarypath</th> 
 
        <th>ACTION</th> 
 
       </tr> 
 
      </thead> 
 
      <tbody></tbody> 
 
     </table> 
 

 
    </div> 
 
</fieldset> 
 
<script type="text/javascript"> 
 
    var urlroot = '@(Url.Content("~/"))'; 
 
    $(document).ready(function() { 
 
     ld.nf.RemoveModuleMask("workbody"); 
 
     if (ld.gd('#ScreenTitleId')) 
 
      ld.gd("ScreenTitleId").innerHTML = '@ViewBag.Title'; 
 
    }); 
 
    $('#btnSearch').click(function() { 
 
     mydatatable.fnDraw(); 
 
    }); 
 
    $('#btnupload').click(function() { 
 
     window.location = "@("/BankPayment/BankPaymentUpload".UrlResolve())"; 
 
    }); 
 

 
    function BackHomePage() { 
 
     window.location = "@("/MainWork/Welcome".UrlResolve())"; 
 
     ld.gd("ScreenTitleId").innerHTML = ""; 
 
    } 
 
    function DeleteFile(filename) { 
 
     alert(urlroot + 'BankPayment/BankPaymentDelete?fn=' + filename + '&fc=' + Math.random()); 
 
     window.location = urlroot + 'BankPayment/BankPaymentDelete?fn=' + filename + '&fc=' + Math.random(); 
 
    } 
 

 
    function EnterSearch(textId, evt) { 
 
     if (textId != undefined && evt != undefined) { 
 
      ld.gd(textId).setAttribute("autocomplete", "off"); 
 
      var myEvent = evt ? evt : (window.event ? window.event : null); 
 
      if (myEvent.keyCode === 13) { 
 
       return true; 
 
      } 
 
     } 
 
     return false; 
 
    } 
 
    var mydatatable = null; 
 

 
    $(document).ready(function() { 
 
     mydatatable = $('#dtbankpayheader').dataTable({ 
 
      "oLanguage": { 
 
       "sUrl": "@(Resources.AppGlobal.JqDataLabelFile.UrlResolve())" 
 
      }, 
 
      "aaSorting": [[1, "desc"]], 
 
      "bStateSave": true, 
 
      "aLengthMenu": [[10, 25, 50], [10, 25, 50]], 
 
      "bJQueryUI": true, 
 
      "sPaginationType": "full_numbers", 
 
      "bPaginate": true, 
 
      "bProcessing": false, 
 
      "bServerSide": true, 
 
      "sAjaxSource": "@("/BankPayment/BankPaymentListingAction".UrlResolve())" + "?urlrnd=" + Math.random(), 
 
      "sServerMethod": "POST", 
 
      'bLengthChange': true, 
 
      "iDisplayLength": 30, 
 
      "bFilter": false, 
 
      "fnServerData": function (sSource, aoData, fnCallback) { 
 
       aoData.push({ 'name': 'SearchValue', 'value': ld.gd("SearchValue").value }); 
 
       aoData.push({ 'name': 'SearchType', 'value': ld.gd("SearchType").value }); 
 
       aoData.push({ 'name': 'SearchStatus', 'value': ld.gd("SearchStatus").value }); 
 
       // aoData.push({ 'name': 'ID', 'value': '@(ViewBag.ID)' }); 
 
        $.ajax({ 
 
        "dataType": 'json', 
 
        "type": "POST", 
 
        "url": sSource, 
 
        "data": aoData, 
 
        "success": function (data) { 
 
         fnCallback(data); 
 
        } 
 
       }); 
 
      }, 
 
      "aoColumns": [ 
 
       { "sName": "FileStatus", "sClass": "left", "sWidth": "100px" }, 
 
       { "sName": "Crdt", "sClass": "left", "sWidth": "100px", "sType": "date" }, 
 
       { "sName": "FileName", "sClass": "left" }, 
 
       { "sName": "BankName", "sClass": "left", "sWidth": "100px" }, 
 
       { "sName": "Crid", "sClass": "left", "sWidth": "150px" }, 
 
       { "sName": "filepath", "sClass": "left", "sWidth": "10px", "bVisible": false }, 
 
       { "sName": "summarypath", "sClass": "left", "sWidth": "10px", "bVisible": false }, 
 
       { 
 
        "sName": "", 
 
        "sWidth": "100px", 
 
        "bSearchable": false, 
 
        "bSortable": false, 
 
        "fnRender": function (oObj) { 
 
         var urlreturn = ''; 
 
         if ($.trim(oObj.aData[5]).length > 0 || $.trim(oObj.aData[6]).length > 0 || $.trim(oObj.aData[2]).length > 0) { 
 
          if ($.trim(oObj.aData[5]).length > 0) { 
 
           urlreturn = '<a href="' + urlroot + oObj.aData[5] + '" target="_blank" >LOG</a>&nbsp;&nbsp;'; 
 
          } 
 
          if ($.trim(oObj.aData[6]).length > 0) { 
 
           urlreturn = urlreturn + '<a href="' + urlroot + oObj.aData[6] + '" target="_blank" >SUMMARY</a>&nbsp;&nbsp;'; 
 

 
          } 
 
          if ($.trim(oObj.aData[0]) == 'NEW' && $.trim(oObj.aData[2]).length > 0) { 
 
           urlreturn = urlreturn + '<a href="#" onclick="DeleteFile(\'' + $.trim(oObj.aData[2]) + '\');" >DELETE</a>&nbsp;&nbsp;'; 
 
          } 
 
         } else { 
 
          urlreturn = '<span>&nbsp;&nbsp;</span>'; 
 
         } 
 
         urlreturn += " | <a href='@("/BankPaymentDetail/BankPaymentListing".UrlResolve())? ' >view</a>"; 
 
         // ?id= 
 
         return urlreturn;    
 
        } 
 
       } 
 
      ], 
 
      "fnPageingChange": function (a) { 
 
       alert(a); 
 
      } 
 
     }); 
 
    }); 
 

 
</script>

+0

Это имело смысл, спасибо, но на самом деле я пытался использовать aodata.push в коде ajax ... должен ли я его использовать? И какие детали я должен загружать в id? Надеюсь, вы поняли, что я просто хочу запросить следующую таблицу с первой страницы .... im, используя запрос addCrieria, я был просто смущен, что бы передать и как ... спасибо много чувак – Daniel

ответ

0

В вашей первой таблицы добавить ссылку действий. В параметре этой ссылки действия вы добавляете идентификатор объекта. Ссылка на действие указывает на метод контроллера, который будет загружать вторую страницу (передавая модель в качестве параметра представления). Ваша вторая страница/представление просто отобразит модель, переданную в параметре.

[EDIT]

В своем первом виде таблицы, где вы хотите добавить ссылку, чтобы показать свою вторую таблицу вы используете:

@Html.ActionLink("View details", "MethodToShowTheView", "ControllerThatWillHandleTheQuery", null, new { @id = [Here you put the ID of the object displayed in the first table]}); 

В вашем «ControllerThatWillHandleTheQuery» вы должны создать метод называется "MethodToShowTheView":

[HttpGet] 
public ActionResult MethodToShowTheView(string id) 
{ 
    var guid = //Convert string to GUID 
    var model = //Look for the Details for this id and load in this variable 
    return View("YourSecondView", model); 
} 

Вы должны иметь вторую точку зрения под названием "YourSecondView". В нем вы должны установить тип модели передается с помощью этой строки в заголовке зрения:

@model [TypeOfTheModel]; 

Тогда на вашей странице вы просто должны отобразить данные с помощью переменной модели. Например:

@{ 
    @Html.Raw(Model.Id); 
} 

[Edit2]

urlreturn += " | <a href='@("/BankPaymentDetail/BankPaymentListing".UrlResolve())?id=" + oObject.aData[indexOfTheId] + "' >view</a>"; 

Он позвонит вам метод BankPaymentListing в контроллер BankPaymentDetail передавая идентификатор в ссылке. Затем вы можете использовать свой контроллер для отображения подробных данных и вызова второго представления с подробными данными в модели.

Возможно, я плохо понимаю проблему.

Я могу привести вас к просмотру javascript MVC Grid, который я использую для форматирования и отображения данных.

+0

спасибо, но что вы имеете в виду именно по id объекта? какое значение я должен ему дать? вы имеете в виду внутри ссылки: urlreturn + = "| view"; ? Можете ли вы, пожалуйста, объяснить больше ... am совершенно новый – Daniel

+0

Я редактирую свой ответ, чтобы быть более четким –

+0

, который имел смысл, спасибо, но на самом деле я пытался использовать aodata.push в коде ajax ...я должен использовать его? и какие детали я должен загружать в id? Любой пример? Надеюсь, вы поняли, что я просто хочу запросить следующую таблицу с первой страницы .... im, используя запрос addCrieria, я был просто сбит с толку, что передать и как ... спасибо много чувак – Daniel

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