private void btnRechargeCardView_Click(object sender, EventArgs e) { if (!ValidateDataCardInput()) { return; } dgvRechargeCardHistory.DataSource = null; DateTime date_begin = new DateTime(dtpSaleGasBegin.Value.Year, dtpSaleGasBegin.Value.Month, dtpSaleGasBegin.Value.Day, 0, 0, 0); DateTime date_end = new DateTime(dtpSaleGasEnd.Value.Date.Year, dtpSaleGasEnd.Value.Month, dtpSaleGasEnd.Value.Day, 23, 59, 59); String customerId = (cboRechargeCardCustomer.SelectedItem as ComboboxItem).Value.ToString(); Task <String> task = SGM_WaitingIdicator.WaitingForm.waitingFrm.progressReporter.RegisterTask( () => { return(m_service.SGMSaleGas_GetCardReport(customerId, date_begin, date_end, txtRechargeCardID.Text.Trim())); }); SGM_WaitingIdicator.WaitingForm.waitingFrm.progressReporter.RegisterContinuation(task, () => { String stResponse = task.Result as String; DataTransfer dataResponse = JSonHelper.ConvertJSonToObject(stResponse); if (dataResponse.ResponseCode == DataTransfer.RESPONSE_CODE_SUCCESS) { if (dataResponse.ResponseDataSet != null) { dgvRechargeCardHistory.DataSource = dataResponse.ResponseDataSet.Tables[0]; cardReportViewer.Reset(); String tableName = dataResponse.ResponseDataSet.Tables[0].TableName; DataTable data = dataResponse.ResponseDataSet.Tables[0]; cardReportViewer.LocalReport.DataSources.Add(new ReportDataSource(tableName, data)); ReportBuilder reportBuilder = new ReportBuilder(); reportBuilder.DataSource = dataResponse.ResponseDataSet; reportBuilder.Page = new ReportPage(); ReportSections reportHeader = new ReportSections(); reportHeader.Size = new ReportScale(); reportHeader.Size.Height = 0.1; ReportItems reportHeaderItems = new ReportItems(); ReportTextBoxControl[] headerTxt = new ReportTextBoxControl[1]; headerTxt[0] = new ReportTextBoxControl() { Name = "txtReportTitle", ValueOrExpression = new string[] { string.Format("Sales Report: {0}", DateTime.Now) } }; reportHeaderItems.TextBoxControls = headerTxt; reportHeader.ReportControlItems = reportHeaderItems; reportBuilder.Page.ReportHeader = reportHeader; cardReportViewer.LocalReport.LoadReportDefinition(ReportEngine.GenerateReport(reportBuilder)); cardReportViewer.RefreshReport(); } else { frmMsg.ShowMsg(SGMText.SGM_INFO, SGMText.REPORT_NO_DATA, SGMMessageType.SGM_MESSAGE_TYPE_INFO); } } else { frmMsg.ShowMsg(SGMText.SGM_ERROR, dataResponse.ResponseErrorMsg, SGMMessageType.SGM_MESSAGE_TYPE_ERROR); } }, SynchronizationContext.Current); }