我是 ASP.NET 的新手,
我正在制作国家,州下拉列表。
例如:对于特定国家,我将从缓存文件中读取该国家的状态。
逻辑:当用户第一次访问时,缓存将为空,因此将从缓存中获取相应XMLFile
的状态并将其状态插入缓存,下次当用户访问同一国家/地区时,应从缓存中获取其状态,而不是从XMLFile
.
我无法在我的下拉列表中获取所需国家/地区的状态...
这是我的代码片段,
protected void DropDownListCountry_SelectedIndexChanged(object sender, EventArgs e)
{
string SelectedCountry = DropDownListCountry.SelectedItem.Text;
XDocument doc = XDocument.Load(Server.MapPath("XMLFile.xml"));
var query = from country in doc.Descendants("country")
where country.Attribute("name").Value == SelectedCountry
select new
{
states = from state in country.Elements("state")
select new{
Name = state.Attribute("name").Value
}
};
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Name"));
if (Cache["key"]==null)
{
foreach (var st in query)
{
foreach (var StateName in st.states)
{
DataRow dr = dt.NewRow();
dr["Name"] = StateName.Name;
dt.Rows.Add(dr);
Cache.Insert("key", dr);
}
}
DropDownListState.DataSource = dt;
DropDownListState.DataTextField = "Name";
DropDownListState.DataBind();
}
else
{
object obj = Cache["key"];
dt.Rows.Add(obj);
DropDownListState.DataSource = dt;
DropDownListState.DataTextField = "Name";
DropDownListState.DataBind();
}
}
提前致谢 !!