0
Reply

Search records based on criteria (MVC)

Gurjeet Singh

Gurjeet Singh

10 years ago
1.5k
I have three 3 Dropdownlist. When i select brand dropdownlist it's fill records in product dropdownlist as well as Table(it invoke Model.GetSaleRecords()) but i want to invoke Model.GetSaleRecords() method only when user click on Search Button.


Controller

 [HttpGet]
        public ActionResult postyourad()
        {
            return View(new masterList());
        }
        [HttpPost]
        public ActionResult postyourad(masterList ddlListPostData)
        {           
                return View(ddlListPostData);           
        }




Model Class

namespace ModelEdmx.Models
{
    public class masterList
    {

        [Required]
        public virtual string _model { get; set; }
        [Required]
        public virtual string _product { get; set; }
        [Required]
        public virtual string _brand { get; set; }

        public IList<SelectListItem> mastr_name { get; set; }
        ConnectionClass con_cs = new ConnectionClass();
        public SelectList getBrand()
        {
            IEnumerable<SelectListItem> stateList = (from s in con_cs.stock_entries                                                  
                                                     select new SelectListItem()
                                                     {
                                                         Text = s.brand,
                                                         Value = s.brand
                                                     }).Distinct().OrderBy(x => x).ToList<SelectListItem>();
            return new SelectList(stateList, "Value", "Text", _brand);
        }
        public SelectList getProduct()
        {
            IEnumerable<SelectListItem> ProductList = new List<SelectListItem>();
            if (!string.IsNullOrEmpty(_brand))
            {
                ProductList = (from s in con_cs.stock_entries
                               where s.brand == _brand
                               select new SelectListItem()
                               {
                                   Text = s.product,
                                   Value = s.product
                               }).Distinct().ToList<SelectListItem>();
            }
            return new SelectList(ProductList, "Value", "Text", _product);
        }       
        public SelectList getModel()
        {
            IEnumerable<SelectListItem> ModelList = new List<SelectListItem>();
            if (!string.IsNullOrEmpty(_brand) && !string.IsNullOrEmpty(_product))
            {
                ModelList = (from s in con_cs.stock_entries
                             orderby s.model
                             where s.brand == _brand && s.product== _product
                             select new SelectListItem()
                             {
                                 Text = s.model,
                                 Value = s.model
                             }).Distinct().ToList<SelectListItem>();
            }
            return new SelectList(ModelList, "Value", "Text", _model);
        }
        public List<Mydata> GetSaleRecords()
        {
            List<Mydata> query = new List<Mydata>();
            //var query="";
            if (!string.IsNullOrEmpty(_brand) && !string.IsNullOrEmpty(_product) && !string.IsNullOrEmpty(_model))           
            {

                query = (from pd in con_cs.SaleDtls_entries
                         join od in con_cs.SaleMstr_entries on pd.req_no equals od.req_no
                         where pd.brand == _brand && pd.product == _product && pd.model_no == _model
                         orderby od.Id
                         select new Mydata
                         {
                             Id = od.Id,
                             req_no = od.req_no,
                             product = pd.product,
                             brand = pd.brand,
                             price = pd.price,
                             Qty = pd.Qty,
                             bill_amt = od.bill_amt,
                         }).ToList();

               
            }
            else
            {
                if (!string.IsNullOrEmpty(_brand) && !string.IsNullOrEmpty(_product))
                {
                    query = (from pd in con_cs.SaleDtls_entries
                             join od in con_cs.SaleMstr_entries on pd.req_no equals od.req_no
                             where pd.brand == _brand && pd.product == _product
                             orderby od.Id
                             select new Mydata
                             {
                                 Id = od.Id,
                                 req_no = od.req_no,
                                 product = pd.product,
                                 brand = pd.brand,
                                 price = pd.price,
                                 Qty = pd.Qty,
                                 bill_amt = od.bill_amt,
                             }).ToList();
                }
                else
                {
                    if (!string.IsNullOrEmpty(_brand))
                    {
                        query = (from pd in con_cs.SaleDtls_entries
                                 join od in con_cs.SaleMstr_entries on pd.req_no equals od.req_no
                                 where pd.brand == _brand
                                 orderby od.Id
                                 select new Mydata
                                 {
                                     Id = od.Id,
                                     req_no = od.req_no,
                                     product = pd.product,
                                     brand = pd.brand,
                                     price = pd.price,
                                     Qty = pd.Qty,
                                     bill_amt = od.bill_amt,
                                 }).ToList();
                    }
                }
            }
            return query;
        }
    }
}

View

<form method="post" id="TheForm" action="">
 @using (Html.BeginForm("stok", "postyourad", FormMethod.Post, new { id = "TheForm" }))
 {
     @*@Html.DropDownListFor(x => x._brand, new MultiSelectList(Model.getBrand(), Model.getBrand()), "--Choose Your State--",*@
    @Html.DropDownListFor(x => x._brand, Model.getBrand(), "--Choose Your Brand--",
    new
    {
        onchange = "document.getElementById('TheForm').submit();"
    })
    @Html.DropDownListFor(x => x._product, Model.getProduct(), "--Choose Your  Product--",
    new
    {
        onchange = "document.getElementById('TheForm').submit();"
    })
    @Html.DropDownListFor(x => x._model, Model.getModel(), "--Choose Your Model--",
    new
    {
        onchange = "document.getElementById('TheForm').submit();"
    })
   
     <input type="submit" value="Search" />
   <table  id="tbl2" cellspacing="0" cellpadding="0" style="width: 692px;">
    @foreach (var list in Model.GetSaleRecords())
    {
        <tr>
            <td style="font-size: large; font-style: italic; font-weight: bold" class="c1">
              @list.Id
            </td>         
            <td class="c2" ><input value="@list.bill_amt" type="text" class="data1" />
            </td>
            <td class="c3">@list.brand
            </td>
            <td class="c4">@list.product
            </td>
            <td class="c5"><input value="@list.price" type="text" class="data1" />
            </td>
            <td class="c6">@list.Qty
            </td>
        </tr>
    }
     </table>
    
 }
</form>