2017-07-16 63 views
0

如何編碼下拉列表中要搜索的類別,我的下拉列表中有2個項目:SSNorTIN和帳號,一切正常,我已經可以搜索,我只想有更多的選項,我的搜索,請幫助ASP.NET MVC下拉列表中要搜索的類別

這是我的代碼:

控制器

public List<CICO> GetCICO(List<SqlParameter> queryParams) 
{ 
    List<CICO> cicos = new List<CICO>(); 
    using (SqlConnection con = new SqlConnection()) 
    { 
     con.ConnectionString = str; 
     using (SqlCommand cmd = new SqlCommand()) 
     { 
      cmd.Connection = con; 
      cmd.CommandTimeout = 180; 
      string q = " SELECT distinct i.ssn_or_tin,i.cusid,i.accountNo,i.dateTrans,i.transCode,i.transdescription_1,(i.debit) as amount,(coalesce(c.debit, 0)) as cashin,(coalesce(o.debit, 0)) as cashout,i.source"; 
      q += " FROM source_ips i "; 
      q += " LEFT JOIN (SELECT * FROM source_cash_in_original where transCode = '966') as c ON(i.ssn_or_tin = c.ssntin or i.cusid = c.cusid or i.accountNo = c.accountNo) and i.dateTrans = c.dateTrans"; 
      q += " LEFT JOIN(select * from source_cash_out_original where transCode = '936') as o on(i.ssn_or_tin = o.ssntin or i.cusid = o.cusid or i.accountNo = o.accountNo) and i.dateTrans = o.dateTrans"; 
      q += " WHERE (i.ssn_or_tin = @ssn_or_tin OR @ssn_or_tin='') and i.transCode = '131' and (i.dateTrans between '1/22/2015' and '1/22/2015') order by i.dateTrans ASC"; 
      cmd.Parameters.AddRange(queryParams.ToArray()); 
      cmd.CommandText = q; 
      con.Open(); 
      using (SqlDataReader sdr = cmd.ExecuteReader()) 
      { 
       if (sdr.HasRows) 
       { 
        while (sdr.Read()) 
        { 
         CICO cico = new CICO() 
         { 
          ssn_or_tin = sdr["ssn_or_tin"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["ssn_or_tin"]), 
          cusid = sdr["cusid"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["cusid"]), 
          accountNo = sdr["accountNo"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["accountNo"]), 
          dateTrans = sdr["dateTrans"].ToString(), 
          transCode = sdr["transCode"] == DBNull.Value ? (int?)null : Convert.ToInt32(sdr["transCode"]), 
          transdescription_1 = sdr["transdescription_1"].ToString(), 
          amount = sdr["amount"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["amount"]), 
          cashin = sdr["cashin"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["cashin"]), 
          cashout = sdr["cashout"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["cashout"]), 
          source = sdr["source"].ToString() 
         }; 
         cicos.Add(cico); 
        } 
       } 
      } 
      con.Close(); 
     } 
    } 
    return cicos; 
} 

[HttpPost] 
public JsonResult GetAllCICO(SearchParameters searchParameters = null) 
{ 
    searchParameters = searchParameters ?? new SearchParameters(); 

    List<SqlParameter> parameters = searchParameters.ToSqlParameterList(); 
    var cicos = GetCICO(parameters).ToList(); 

    var jsonResult = Json(new{data = cicos}, JsonRequestBehavior.AllowGet); 
    jsonResult.MaxJsonLength = int.MaxValue; 
    return jsonResult; 
} 

模式

public class CICO 
{ 
    public double? ssn_or_tin { get; set; } 
    public double? cusid { get; set; } 
    public double? accountNo { get; set; } 
    public string dateTrans { get; set; } 
    public int? transCode { get; set; } 
    public string transdescription_1 { get; set; } 
    public double? amount { get; set; } 
    public double? cashin { get; set; } 
    public double? cashout { get; set; } 
    public string source { get; set; } 
} 

public class SearchParameters 
{ 
    public string ssn_or_tin { get; set; } 
    public SearchParameters() 
    { 
     this.ssn_or_tin = string.Empty; 
    } 

    internal List<SqlParameter> ToSqlParameterList() 
    { 
     List<SqlParameter> parameters = new List<SqlParameter>(); 
     parameters.Add(new SqlParameter("@ssn_or_tin", this.ssn_or_tin??string.Empty)); 
     return parameters; 
    } 
} 

的Html

<div style="margin-bottom: 20px" class="row"> 
    <label style="margin-top: 5px" class="col-md-1">Search:</label> 
    <div class="col-md-3"> 
     <select class="form-control input-sm"> 
      <option>SSN or TIN</option> 
      <option>Account Number</option> 
     </select> 
    </div> 
    <div class="col-md-6"> 
     <input type="text" class="form-control input-sm" id="txtSSN"> 
    </div> 
    <div class="col-md-2"> 
     <button class="btn btn-success btn-sm" id="btnSearch" type="submit"><i class="fa fa-search" aria-hidden="true"></i></button> 
    </div> 
</div> 

<table class="table table-hover table-bordered" id="IPSCICODatatable"> 
    <thead> 
    <tr> 
     <th>SSN or TIN</th> 
     <th>Customer ID</th> 
     <th>Account Number</th> 
     <th>Date Transaction</th> 
     <th>Trans Code</th> 
     <th>Trans Description</th> 
     <th>Amount</th> 
     <th>Cash in</th> 
     <th>Cash out</th> 
     <th>Source</th> 
    </tr> 
    </thead> 
</table> 

的Javascript

$(document).ready(function() { 

var table = $('#IPSCICODatatable').DataTable({ 
    dom: "<'row'<'col-sm-6'l><'col-sm-6'f>>" + 
     "<'row'<'col-sm-12'tr>>" + 
     "<'row'<'col-sm-2'i><'col-sm-5'B><'col-sm-5'p>>", 
    buttons: [ 
     'copyHtml5', 
     'excelHtml5', 
     'csvHtml5', 
     'pdfHtml5', 
     'print' 
    ], 
    "ajax": { 
     "url": '/Home/GetAllCICO', 
     "type": "POST", 
     "datatype": "json", 
     "data": function (d) { 
      d.searchParameters = {}; 
      d.searchParameters.ssn_or_tin = $('#txtSSN').val(); 
     } 
    }, 
    "columns": [ 
     { "data": "ssn_or_tin", "autoWidth": true }, 
     { "data": "cusid", "autoWidth": true }, 
     { "data": "accountNo", "autoWidth": true }, 
     { "data": "dateTrans", "autoWidth": true }, 
     { "data": "transCode", "autoWidth": true }, 
     { "data": "transdescription_1", "autoWidth": true }, 
     { "data": "amount", "autoWidth": true }, 
     { "data": "cashin", "autoWidth": true }, 
     { "data": "cashout", "autoWidth": true }, 
     { "data": "source", "autoWidth": true } 
    ] 
}); 

$('#btnSearch').on("click", function() { 
    table.ajax.reload(); 
}); 

}); 
+0

這裏你必須傳遞更多的參數,例如:d.searchParameters.cusid = $('#txtcusid')。val(); –

回答

0

在這裏你去,你必須在你的Ajax調用傳遞更多參數:

"data": function (d) { 
      d.searchParameters = {}; 
      d.searchParameters.ssn_or_tin = $('#txtSSN').val(); 
      d.searchParameters.cusid= $('#txtcusid').val(); 
      d.searchParameters.accountNo= $('#txtaccountNo').val(); 
     } 

然後你將得到所有參數

+0

我的SQL查詢將如何? – Hansmagz