0

jquery データテーブルを初期化するには、ID を渡す必要があります。メイン テーブルで fnServerParams を正しく使用していますが、エクスポート ボタンをクリックすると、コントローラーに渡される param パラメーターに必要な ID がありません。ID を取得するには、oTableTools 内で何かを行う必要がありますか?

Javascript:

$(document).ready(function () {
    var oTable = $('#tblAddressErrors').dataTable({
        "bJQueryUI": true,
        "iDisplayLength": 25,
        "bServerSide": true,
        "sAjaxSource": "/Issuance/Issuance/AjaxHandler2",
        "sScrollX": "100%",
        "bProcessing": true,
        "aoColumns": [
                            { "sName": "Master_Name" },
                            { "sName": "Group_Name" },
                            { "sName": "household_id",
                            "fnRender": function (oObj) {
                                var householdId = oObj.aData[2];
                                return '<a href=\"/Household/Household/Details?householdId=' + householdId + '\">' + householdId + '</a>';
                            },
                            "bUseRendered": false
                        },
                            { "sName": "First_Name" },
                            { "sName": "Last_Name" },
                            { "sName": "Pan_NR" }                
        ],
        "sDom": '<"H"Tfr>t<"F"ip>',
        "oTableTools": {
            "sSwfPath": "/Content/media/swf/copy_csv_xls.swf",
            "aButtons": [{ "sExtends": "download", "sButtonText": "Export", "sUrl": "/Issuance/Issuance/AjaxHandlerExport2" }]
        },
        "fnServerParams": function (aoData) {
            aoData.push(
                { "name": "cardStockId", "value": $("#CardStockId").val() }
            );
        }
    });
});

コントローラーのアクション:

public ActionResult AjaxHandlerExport2(JQueryDataTableParamModel param)
        {
            var addressErrorsExports = (from addressErrorExport in GetAddressErrors(param, true).Issuances
                                   select new
                                   {
                                       MasterGroupName = addressErrorExport.Group.MasterGroupName,
                                       GroupName = addressErrorExport.Group.Name,
                                       HouseholdID = addressErrorExport.HouseholdId,
                                       FirstName = addressErrorExport.Group.ContactInfo.FirstName,
                                       LastName = addressErrorExport.Group.ContactInfo.LastName,
                                       PAN = addressErrorExport.PanNumber.ToString()
                                   }).ToList();

            return File(addressErrorsExports.ExportToCsv(new string[0]), "application/ms-excel", "AddressErrors.xls");
        }

private IssuanceResults GetAddressErrors(JQueryDataTableParamModel param, bool isExport)
        {
            IssuanceResults issuanceResults = new IssuanceResults();
            IssuanceSearch issuanceSearch = PopulateIssuanceSearch(param, isExport);
            issuanceSearch.CardStockId = param.cardStockId;

            using (var householdService = _householdService.GetWrappedProxy())
            {
                issuanceResults = householdService.BaseObject.GetIssuanceResults(issuanceSearch, Common.Issuance.ReturnType.AddressErrors);
            }
            return issuanceResults;
        }

        private IssuanceSearch PopulateAddressErrors(JQueryDataTableParamModel param, bool isExport)
        {
            return new IssuanceSearch
            {
                Text = param.sSearch ?? string.Empty,
                MaxRows = isExport ? Properties.Settings.Default.MaxExportRows : param.iDisplayLength,
                RowIndex = isExport ? 0 : param.iDisplayStart,
                SortColumn = param.sColumns.Split(',')[param.iSortCol_0],
                SortDirection = param.sSortDir_0,
            };
        }

したがって、基本的に、最初に GetAddressErrors メソッドをヒットすると、テーブルが最初に初期化されるときに CardStockID が入力されますが、jquery データテーブルの [エクスポート] ボタンをクリックして GetAddressErrors メソッドを再度押すと、CardStockID はパラメーターに入力されなくなりました.

4

0 に答える 0