2017-06-23 81 views
2

我有一个填充状态的下拉列表。另一个下拉(城市)应该根据状态的选择来填充。有任何想法吗?如何通过mvc sql server中另一个下拉列表的值来填充下拉列表

这是我的城市下拉列表模式:

public List <SelectListItem> Add() 
{ 
    List<SelectListItem> items = new List<SelectListItem>(); 
    connection(); 
    SqlCommand cmd = new SqlCommand("proccountry_dropdown1", con); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@pstroperationflag", "S-city"); 
    con.Open(); 
    using (SqlDataReader sdr = cmd.ExecuteReader()) 
    { 
     while (sdr.Read()) 
     { 
      items.Add(new SelectListItem 
      { 
       Text = sdr["city"].ToString(), 
       Value = sdr["city"].ToString() 
      }); 
     } 
    } 
    con.Close(); 
    return items; 
} 

这是我的SQL服务器代码:

ELSE IF @pstrOperationFlag = 'S-city' 
    BEGIN 
     SET @strSqlQry = 'SELECT city FROM ' 
     SET @strSqlQry = @strSqlQry + 'country_dropdown1' 
     PRINT @strSqlQry 
     EXECUTE(@strSqlQry) 
    END 
+0

默认情况下,您可以保持城市下拉为空。为状态下拉菜单写入onchange事件,并在选择状态下拉列表时填充城市下拉列表中的数据。 –

+0

那个伴侣的代码是什么? –

+0

在我看来,你不能正确理解MVC。此外,您的问题中缺少代码和解释。如果你得到这些,我很肯定你会在网上找到合适的代码。 –

回答

1

你需要做的AJAX调用上改变获取城市细节状态的事件:

您查看页:

<script type="text/javascript"> 
    $(function() { 
    // get region list 
     $('#StateId').change(function() { 
      $.getJSON('/Home/GetCityList/' + $('#StateId').val(), function (data) { 
       var items = '<option>-Select City-</option>'; 
       $.each(data, function (i, region) { 
        items += "<option value='" + region.Value + "'>" + region.Text + "</option>"; 
       }); 
       $('#CityId').html(items); 
      }); 
     }); 
}); 
</script> 

和你的控制器动作:

public JsonResult GetCityList(int? Id) 
    { 
    var citylist = _userService.GetAllCity().Where(p => p.StateId == Id).ToList(); 
    IEnumerable<SelectListItem> selectList = from s in citylist 
                 select new SelectListItem 
                 { 
                  Value = Convert.ToString(s.Id), 
                  Text = s.Name 
                 }; 
    return Json(new SelectList(selectList, "Value", "Text"), JsonRequestBehavior.AllowGet); 
    } 

而上查看下拉:

<td>@Html.DropDownList("StateId", new SelectList(Model.StateList, "Id", "Name"), "-Select State-", new { @class = "form-control" }) </td> 
<td>@Html.DropDownList("CityId", new SelectList(Model.CityList, "Id", "Name"), "-Select City-", new { @class = "form-control" })</td> 
+0

我应该在哪里让ajax调用bro? –

+0

在您的视图页面 –

+0

里面脚本标签bro ?? –

0

您可以只需将“$( '#STATEID') (function()...“)代码($(document).ready(function(){....});它会工作。

相关问题