我有三个下拉框分别表示国家、州和城市。但我只想要州和国家下拉列表。因为国家只有一个。所以不需要国家下拉列表。我试过了,但是有些类会出错。请帮助。参考代码
var countries = _careerHelper.GetCountries();
countries.Insert(0, "--Select--");
ddlCountry.DataSource = countries;
ddlCountry.DataBind();
var states = _careerHelper.GetStates(ddlCountry.SelectedValue);
states.Insert(0, "--Select--");
ddlState.DataSource = states;
ddlState.DataBind();
var cities = _careerHelper.GetLocations(ddlCountry.SelectedValue, ddlState.SelectedValue);
cities.Insert(0, "--Select--");
ddlCity.DataSource = cities;
ddlCity.DataBind();
_careerhelper类代码如下:
public List<string> GetCountries()
{
return _rblDataContext.Locations
.Select(m => m.CountryName)
.Distinct()
.ToList();
}
public List<string> GetStates(string country)
{
if (country == "")
{
return null;
}
else
{
return _rblDataContext.Locations
.Where(m => m.CountryName.ToLower() == country
.ToLower())
.Select(m => m.StateName)
.Distinct()
.ToList();
}
}
}
让我知道如何删除国家下拉框,这样我就可以管理州和城市下拉框。请帮助
问题:
在这里你使用国家下拉传递选定的国家作为参数。
var states = _careerHelper.GetStates(ddlCountry.SelectedValue);
解决方案1:
按SpaceBison建议手动设置国家名称并将其传递给GetStates
。
string country = "Country Name";
var states = _careerHelper.GetStates(country);
同样的事情你将不得不做的Cities
以及:
var cities = _careerHelper.GetLocations(country, ddlState.SelectedValue);
解决方案2:
另一个解决方案是在下拉菜单中设置默认值,然后让一切保持原样。
选择国家并禁用下拉菜单,以便用户无法选择。
ddlCountry.Items.FindByText("India").Selected = true;
ddlCountry.Enabled = false;
完整代码解决方案:
//populate countries
var countries = _careerHelper.GetCountries();
countries.Insert(0, "--Select--");
ddlCountry.DataSource = countries;
ddlCountry.DataBind();
//select default country
ddlCountry.Items.FindByText("India").Selected = true;
ddlCountry.Enabled = false;
//populate states
var states = _careerHelper.GetStates(ddlCountry.SelectedValue);
states.Insert(0, "--Select--");
ddlState.DataSource = states;
ddlState.DataBind();
//populate cities
var cities = _careerHelper.GetLocations(ddlCountry.SelectedValue, ddlState.SelectedValue);
cities.Insert(0, "--Select--");
ddlCity.DataSource = cities;
ddlCity.DataBind();