2017-08-04 12 views
1

私はいくつかの情報を持つデータベースを持っており、簡単なフィルタを作成しました。私はまた、各ループのためのクラスを作成して、その情報をpdfフィールドに設定しました。私はフィルタのデータだけで同じフィールドにデータを取り込む方法を理解しようとしています。例えば、私は特定の都市の人と私がフィルタリングしたPDFを作りたいと思っています。フィルタリングされたデータからPDFフィールドを取り込むMVC5

これは、フィールドを設定するクラスです。今のところ、フィールドに値が入力され、データベースのすべてのエントリのPDFが作成されます。フィルタリングされたデータのみからPDFを作成して作成する必要があります。

public void CreateVoucher() 
    { 
     Aspose.Pdf.License license = new Aspose.Pdf.License(); 
     license.SetLicense("Aspose.Pdf.lic"); 
     Aspose.Pdf.Facades.Form pdfForm = new Aspose.Pdf.Facades.Form(); 
     var output = Server.MapPath("/PrintingOutput/"); 

     using (var db = new db_VouchersEntities()) 
     { 

      var voucher = db.JUXLSY.ToList(); 

      foreach (var vouch in voucher) 
      { 

       pdfForm.BindPdf(Server.MapPath("/VoucherTemplate/VoucherCertificateTemplateForm.pdf")); 
       pdfForm.FillField("topmostSubform[0].Page1[0].AseguradoraTxt[0]", vouch.SUCUR); 

       if (Directory.Exists(output) == false) 
       { 
        Directory.CreateDirectory(output); 
        pdfForm.FlattenAllFields(); 
        pdfForm.Save(output + vouch.SUCUR.ToString().Trim() + '_' + vouch.NOMBRE_AGENTE.ToString().Trim() + '_' + vouch.PCERNO.ToString().Trim() + ".pdf"); 
       } 
       else 
       { 
        pdfForm.FlattenAllFields(); 
        pdfForm.Save(output + vouch.SUCUR.ToString().Trim() + '_' + vouch.NOMBRE_AGENTE.ToString().Trim() + '_' + vouch.PCERNO.ToString().Trim() + ".pdf"); 
       } 

      } 

     } 




    } 

FilterRecordsアクションメソッドでifステートメントを追加するだけですか? rは、他の方法

public ActionResult FilterRecords(string sucursal, string numPoliza, 
    string numAgente, string numCertificado) 
{ 
     var filteredRecords = RequestRecords(sucursal, ...); 
     // store your filter parameters in a session 
     Session["sucursal"] = sucursal; 

//filter to be display to the user    
     if (!String.IsNullOrWhiteSpace(sucursal)) 
     { 
      filterRecord = filterRecord.Where(r => r.SUCUR.Contains(sucursal)); 
     } 


     return View(filteredRecords); 
} 

答えて

0

上にある場合、どのように私はどこにRにアクセスしますが、私はFilterRecordの結果はあなたのウェブサイト上に表示された後、あなたのCreateVoucher()メソッドは、後で呼び出されたことを、推測します。 これが当てはまる場合は、ユーザーセッションでフィルターパラメーターを保存し、ユーザーが要求するとそのパラメーターをCreateVoucher()メソッドに渡すことをお勧めします。

CreateVoucher()内でdbクエリを実行する代わりに、特別なメソッドを呼び出すことをお勧めします。 RequestRecords(...) - ActionとCreateVoucher()の両方で、すべてのデータクエリの処理を行います。

private IEnumerable<string> RequestRecords(string sucursal, string numPoliza, string numAgente, string numCertificado) 
{ 
    var filterRecord = (from r in db.JUXLSY 
         orderby r.NOMBRE_AGENTE 
         where r.SUCUR == sucursal || sucursal == null || sucursal == "" 
         where r.PPOLIZ == numPoliza || numPoliza == null || numPoliza == "" 
         where r.AGENTE == numAgente || numAgente == null || numAgente == "" 
         select r).ToList(); 
    if (!String.IsNullOrWhiteSpace(sucursal)) 
    { 
     filterRecord = filterRecord.Where(r => r.SUCUR.Contains(sucursal)); 
    } 

    return filteredRecord; 
} 

public ActionResult FilterRecords(string sucursal, string numPoliza, string numAgente, string numCertificado) 
{ 
     var filteredRecords = RequestRecords(sucursal, ...); 
     // store your filter parameters in a session 
     Session["sucursal"] = sucursal; 
     ... 

     return View(filteredRecords); 
} 

public void CreateVoucher(string sucursal, string numPoliza, string numAgente, string numCertificado) 
{ 
    var filteredRecords = RequestRecords(sucursal, ...); 
    foreach(var record in filteredRecords) 
    { 
      // your pdf creation stuff 
    } 
} 
+0

これらは2つの独立したボタンで、1つはFilterReccordsを呼び出し、フィルタリングされたレコードを表示し、もう1つは作成バウチャーを呼び出してPDFを印刷します。それは大変感謝しています。しかし、いくつかの点を明確にすることができます、私はちょうどMVCを働き始めている。どこに "TypeOfYourRecords"を置くかは、特別なメソッドを作成して文字列として定義すると、それらはすべて文字列です。それは私に "文字列にSystem.Linq.IQueryble型を暗黙的に変換できない"というメッセージを与えます。私はそこに何を置くべきですか?また、FilterRecordメソッドでは、私はあなたがすべてのパラメータのために追加したものを繰り返しますか?前もって感謝します。 – Cordero

+0

[OK]をクリックすると、クエリー自体が返されました。その結果、「暗黙的に型を変換できません」というエラーが発生しました。だから、クエリの周りに丸い括弧とデータベースに対してクエリを実行し、あなたのケースの文字列のリストを返す.ToList()呼び出しを認識してください。私はすべてのメソッドの完全な署名で自分の投稿を編集するので、今はもっと明確になることを願っています。 – Axel

+0

申し訳ありませんが、私はまたあなたのデータベースに格納されている種類のモデルを使用するasumed。文字列は問題ないので、文字列のリストを返すように署名を編集します – Axel

関連する問題