jquery 和 mvc.net 查询

jquery and mvc.net query

我对 mvc.net nhibernate 和编程完全陌生,我想做的是使用 ajax 请求进行查询...我有两页...第一页连接到 sql 服务器中的一个 table,下一页连接到另一个 table...这两个 table 与外键连接...第一个页面将显示来自第一个 table 的 jquery 数据table 记录,它有 link 调用视图,当我单击它时它会引导我到另一个 controller/page 这将显示其他数据库 table 的所有 jquery 数据 table 记录 table..所以我的问题是当我单击查看(第一个 page/table)?我想显示某些记录...我应该传递什么?我真的很困惑..这里是我的 class 模型:

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>

在您的第一个 table 中,您添加了一个操作 link。在此操作的参数 link 中,您添加 object 的 ID。操作 link 指向将加载第二页的控制器方法(将模型作为视图的参数传递)。您的第二个 page/view 将只显示传入参数的模型。

[编辑]

在您的第一个 table 视图中,您想添加一个 link 以显示您使用的第二个 table :

@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" 的视图。在其中,您必须在视图的 header 中使用此行设置传递的模型类型:

@model [TypeOfTheModel];

然后在您的页面中,您只需使用变量模型显示数据。例如:

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

[编辑2]

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

它会调用控制器 BankPaymentDetail 中的 BankPaymentListing 方法,传递 url 中的 ID。然后你可以使用你的控制器获取详细数据来显示并使用模型中的详细数据调用第二个视图。

可能是我没看懂问题

我可以带你看看我用来格式化和显示数据的javascript MVC Grid