<div id="ProductionReport">
<div class="ui-widget">
@Using Ajax.BeginForm("Index", "Reports", ajaxOptions:=New AjaxOptions With {.InsertionMode = InsertionMode.Replace, .HttpMethod = "POST", .UpdateTargetId = "searchresultdata"}, htmlAttributes:=New With {.id = "productionform"})
@Html.ValidationSummary(True)
@<fieldset class="ui-widget-content">
<legend class="ui-state-default">Production Report</legend>
<div class="editor-label">
@Html.LabelFor(Function(model) model.ProductionReportData.FromDate, "From Date: ")
@Html.Raw(" ")
@Html.TextBoxFor(Function(model) model.ProductionReportData.FromDate, New With {.class = "ui-state-default", .id = "datepicker", .Style = "font-size:x-small;", .name = "fromdate"})
@Html.ValidationMessageFor(Function(model) model.ProductionReportData.FromDate)
</div>
<div class="editor-label">
@Html.LabelFor(Function(model) model.ProductionReportData.ToDate, "To Date: ")
@Html.Raw(" ")
@Html.TextBoxFor(Function(model) model.ProductionReportData.ToDate, New With {.class = "ui-state-default", .id = "datepicker2"})
@Html.ValidationMessageFor(Function(model) model.ProductionReportData.ToDate)
</div>
<div class="editor-label">
@Html.LabelFor(Function(model) model.ProductionReportData.ShowDetails, "Show Details: ")
@Html.EditorFor(Function(model) model.ProductionReportData.ShowDetails)
</div>
<div class="editor-label">
<input class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all"
type="submit" value="Search" name="btnSearch" />
<input class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all"
type="submit" value="Export Data" name="btnSearch" />
</div>
</fieldset>
End Using
</div>
<div id="searchresultdata" class="ui-widget-content">
</div>
</div>
enter code h<HttpPost()> _
Function ExportProductionReportData(ByVal data As ReportsModel) As FileResult
Dim var = From I In db.scll_label Join P In db.pt_mstr On I.scll_part Equals P.pt_part _
Join C In db.sclws_cfg On I.scll_wsid Equals C.sclws_id _
Where P.pt_domain = "mueller" And C.sclws_domain = "mueller" _
And I.scll_transactiondate >= data.ProductionReportData.FromDate And I.scll_transactiondate <= data.ProductionReportData.ToDate _
Select I, P.pt_length, P.pt_net_wt, P.pt_desc1, P.pt_tol_high, P.pt_part_type, P.pt_um, _
C.sclws_proj_code, C.sclws_site
Dim ProMod As New ProductionReportModel
ProMod.ProductionDetails = New ObservableCollection(Of ProductionReportDetails)
ProMod.ProductionGrandTotal = New ProductionReportGrandTotals
ProMod.ProductionPartTotals = New ObservableCollection(Of ProductionReportTotalsByPart)
''Generate Production Details
For Each rec In var
Dim proModDtls As New ProductionReportDetails
proModDtls.Customer = rec.I.scll_cust
proModDtls.Feet = rec.I.scll_total_feet
proModDtls.GrossWeight = rec.I.scll_weight
proModDtls.NetWeight = rec.I.scll_weight - rec.I.scll_total_tare
proModDtls.Part = rec.I.scll_part
If rec.pt_um = "LB" Then
Try
proModDtls.Pieces = rec.I.scll_total_feet / rec.pt_length
Catch ex As Exception
proModDtls.Pieces = rec.I.scll_qty
End Try
ElseIf rec.pt_um = "FT" Then
Try
proModDtls.Pieces = rec.I.scll_qty / rec.pt_length
Catch ex As Exception
proModDtls.Pieces = rec.I.scll_qty
End Try
Else
proModDtls.Pieces = rec.I.scll_qty
End If
proModDtls.Quantity = rec.I.scll_qty
proModDtls.ReasonCode = rec.sclws_proj_code
proModDtls.StandardWeight = rec.I.scll_std_weight
proModDtls.Station = rec.I.scll_wsid
proModDtls.Tare = rec.I.scll_total_tare
proModDtls.TareDetail = rec.I.scll_tare_detail
proModDtls.Ticket = rec.I.scll_ticket
Try
proModDtls.DrawingEfficiency = ((rec.I.scll_weight - rec.I.scll_total_tare) / rec.I.scll_std_weight) * 100
Catch ex As Exception
End Try
proModDtls.TicketDate = rec.I.scll_transactiondate
ProMod.ProductionDetails.Add(proModDtls)
Next
Dim csvCreator As New CSVFileMaker(Of ProductionReportDetails, List(Of ProductionReportDetails))
csvCreator.data = ProMod.ProductionDetails.ToList
Dim csvdata As String = csvCreator.GenerateCSVFile
Dim d = Encoding.ASCII.GetBytes(csvdata)
Dim filename As String = "ProductionReport" & Date.Now.Year.ToString & "_" & Date.Now.Month.ToString & "_" & Date.Now.Day & ".csv"
Dim cd = New System.Net.Mime.ContentDisposition With {.FileName = filename, .Inline = False, .DispositionType = "attachment"}
Response.AppendHeader("Content-Disposition", cd.ToString)
Return File(d, "text/csv", filename)
End Function
' GET: /Reports _ Function Index(ByVal btnSearch As String, ByVal data As ReportsModel) As ActionResult
data.DrawingEfficiencyWeeklyData = New DrawingEfficiencyWeeklyData
data.DrawingEfficiencyPeriodData = New DrawingEfficiencyPeriodData
data.DrawingEfficiencyYearlyData = New DrawingEfficiencyYearlyData
data.DrawingEfficiencyYearlyMeanData = New DrawingEfficiencyYearlyMeanData
data.DrawingEfficiencySummaryData = New DrawingEfficiencySummaryData
data.ToleranceOverrideReportData = New ToleranceOverrideReportData
data.TareDetailReportData = New TareDetailReportData
Dim var = db.GetGLCYears
Dim var2 = db.GetGLCYears
Dim var3 = db.GetGLCYears
Dim var4 = db.GetGLCYears
Dim allList As New SelectListItem With {.Value = 0, .Text = "All"}
Dim BonusList As New SelectListItem With {.Value = 1, .Text = "Bonus"}
Dim OtherList As New SelectListItem With {.Value = 2, .Text = "Other"}
Dim categoryList As New List(Of SelectListItem)
categoryList.Add(allList)
categoryList.Add(BonusList)
categoryList.Add(OtherList)
data.DrawingEfficiencyYearlyMeanData.CategoryList = categoryList
data.DrawingEfficiencyYearlyMeanData.YearList = var4.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
data.DrawingEfficiencyWeeklyData.YearList = var.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
data.DrawingEfficiencyPeriodData.YearList = var2.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
data.DrawingEfficiencyYearlyData.YearList = var3.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
Select Case btnSearch
Case Is = "Search"
Return (SearchProductionReport(data))
Case Is = "Export Data"
Return ExportProductionReportData(data)
Case Else
Return View(data)
End Select
Return View(data)
End Function
基本上,我的表单将 ajax 响应发送到包含部分视图的 div,但我有另一个提交按钮,它使用相同的数据生成 csv 文件。我无法下载此文件,只需将其输出到 div 中。任何人都可以帮助或指导正确的方向.. 我已经尝试过 actionlinks 但它永远不会将我的模型保存到数据库中我不能使用 html.beginforms 因为我无法设置目标 div 来加载部分视图。
更新:使用脚本但仍然无法正常工作
<script type="text/javascript">
$(document).ready(function () {
$("#productionsearch").click(function () {
$("#productionform").submit(function () {
$.ajax({
url: this.action,
type: this.action,
data: $(this).serialize(),
success: function (result) {
$("#searchresultdata").html(result);
}
});
});
});
});
`