Click here to Skip to main content
15,895,746 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
my view code
==============
Razor
@{
    Layout = null;
}

<h2>Dealer</h2>

<script src="~/Scripts/modernizr-2.5.3.js"></script>
<script src="~/Scripts/jquery-2.1.1.min.js"></script>

            VARIANTNAME    @Html.DropDownList("var1", "Choose VARIANTNAME")
            VEHICLENAME    @Html.DropDownList("var2", "Choose VEHICLENAME")
            MODELNAME    @Html.DropDownList("var3", "Choose MODELNAME")
            <script type="text/javascript">

                $(function () {
                    $("#var1").change(function () {
                        var name = $("#var1 :selected").text();  //if user select the tournament
                        var url = 'Home/Team';
                        var data1 = { "name": name };
                        $.post(url, data1, function (data) {    //ajax call
                            var items = [];
                            items.push("<option value=" + 0 + ">" + "Choose VEHICLENAME" + "</option>"); //first item
                            for (var i = 0; i < data.length; i++) {
                                items.push("<option value=" + data[i].Value + ">" + data[i].Text + "</option>");
                            }                                         //all data from the team table push into array
                            $("#var2").html(items.join(' '));
                        })                                            //array object bind to dropdown list
                    });

                    $("#var2").change(function () {                  //same logic for 3rd dropdown list
                        var name = $("#var2 :selected").text();

                        var url = 'Home/Player';
                        var data1 = { "name": name };
                        $.post(url, data1, function (data) {
                            var items = [];
                            items.push("<option value=" + 0 + ">" + "Choose Player" + "</option>");
                            for (var i = 0; i < data.length; i++) {
                                items.push("<option value=" + data[i].Value + ">" + data[i].Text + "</option>");
                            }
                            $("#var3").html(items.join(' '));
                        })
                    });

                });

            </script>

            <input type="submit" value="submit" />


Controller code
======================
C#
public class DealerController : Controller
    {
        //
        // GET: /Dealer/

        string connection = ConfigurationManager.ConnectionStrings["DBconnectionString"].ConnectionString;
        List<SelectListItem> Vehicle = new List<SelectListItem>();
        List<SelectListItem> MODELNAME = new List<SelectListItem>();
        List<SelectListItem> Variant = new List<SelectListItem>();
        public ActionResult Dealer()
        {
            ViewBag.var1 = GetOptions();
            ViewBag.var2 = Vehicle;
            ViewBag.var3 = MODELNAME;
            return View();
        }


        private SelectList GetOptions()
        {

            using (SqlConnection conn = new SqlConnection(connection))
            {
                try
                {
                    conn.Open();
                    SqlDataReader myReader = null;
                    SqlCommand myCommand = new SqlCommand("SELECT VARIANTID, VARIANTNAME FROM VARIANT", conn);

                    myReader = myCommand.ExecuteReader();
                    while (myReader.Read())
                    {

                        Variant.Add(new SelectListItem { Text = myReader["VARIANTNAME"].ToString(), Value = myReader["VARIANTID"].ToString() });
                    }


                }
                catch (Exception e)
                {
                    string msg = e.Message;
                }
                finally
                {

                    conn.Close();
                }

                return new SelectList(Variant, "Value", "Text", "id");

            }
        }
        public JsonResult Team(string name)
        {

            using (SqlConnection conn = new SqlConnection(connection))
            {
                conn.Open();
                SqlDataReader myReader = null;
                SqlCommand myCommand = new SqlCommand("select VARIANTID,VEHICLENAME from VARIANT where VARIANTNAME ='" + name + "' ", conn);
                myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {

                    Vehicle.Add(new SelectListItem { Text = myReader["VEHICLENAME"].ToString(), Value = myReader["VARIANTID"].ToString() });
                }
            }
            return Json(Vehicle, JsonRequestBehavior.AllowGet);

        }

        public JsonResult Player(string name)
        {

            using (SqlConnection conn = new SqlConnection(connection))
            {
                conn.Open();
                SqlDataReader myReader = null;
                SqlCommand myCommand = new SqlCommand("select VARIANTID,MODELNAME from VARIANT where VEHICLENAME ='" + name + "' ", conn);
                myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {

                    MODELNAME.Add(new SelectListItem { Text = myReader["MODELNAME"].ToString(), Value = myReader["VARIANTID"].ToString() });
                }
            }
            return Json(MODELNAME, JsonRequestBehavior.AllowGet);

        }


What I have tried:

first value only working and another two script or not work.., pls help anyone
Posted
Updated 27-Sep-16 4:04am
v2
Comments
Karthik_Mahalingam 27-Sep-16 7:05am    
getting any error in console window?
Member 12753551 27-Sep-16 9:35am    
No error we getting, but not working
Karthik_Mahalingam 27-Sep-16 10:04am    
place debugger and breakpoint in the code and check whether it hits the method

1 solution

So a few things.

You are using an onchange event for your drop downs, $("#var1").change(function, yet your dropdowns themselves have no data in it to begin with:

HTML
VARIANTNAME    @Html.DropDownList("var1", "Choose VARIANTNAME")
            VEHICLENAME    @Html.DropDownList("var2", "Choose VEHICLENAME")
            MODELNAME    @Html.DropDownList("var3", "Choose MODELNAME")


If you were going to do something to the effect of onchange, i would expect to see data in those drop downs. All you've done is given the drop downs a name, ex: var1, and set the default option label, ex: "CHOOSE VARIANT NAME", given that the default option label is the only option...there is nothing to "change" so therefore your .change events in your jquery would/should never fire which is behaving as expected.

A drop down list that would come pre-populate with data would look something like

HTML
@Html.DropDownList("var1", Model.Var1Options, "Choose Vehiclename")


Or something like that.

I think you need to rethink how you are loading the data/what jquery event to use to fetch your data from db.

But lets say those .change events do work...which i am 99% sure they do not...your passing back "Choose VARIANTNAME" as your name parameter...I highly doubt you have anything in your database that would return from this select statement

SQL
select VARIANTID,VEHICLENAME from VARIANT where VARIANTNAME ='Choose VARIANTNAME'


Because at the time the .change event fires on var1, the only option in that drop down is "Choose VARIANTNAME" and the jquery line -> var name = $("#var1 :selected").text(); would be getting Choose VariantName (i believe...if not it gets empty string).

But I'll say this...you need to get in a mindset of debugging. If you have events in jquery tied to elements, all you need to do is add a console.log to that event...do whatever that event is (ex: click) and see if your console.log fires. Had you done this you probably would have seen your change event handlers not firing to start with.
 
Share this answer
 
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900