转发器内的控件放置在更新面板中。第一个ddl有国家,它的“selectedindexchanged”填补了第二个用于城市的ddl。填充文本框并选择国家/地区和城市后,单击“添加”按钮,所有控件的值将保留在转发器中。
当你再添加一些时,总是最后一个的ddlCountry会激活ddl_SelectedIndexChanged()。如果您尝试更改前一个的ddlCountry值,则不会执行.cs文件中的ddl_SelectedIndexChanged()。我检查了页面源:final ddlCountry的Id是
cphContent_ddlAddressCountry
并且前一个的ID被分配为:
cphContent_rpAddress_lblCountrym_0
cphContent指的是UpdatePanel,rp指的是Repeater。
我不知道如何在转发器中捕获ddl的Id。
答案 0 :(得分:0)
可以通过以下几种方式在转发器中捕获控件:
从SelectedIndexChanged()事件中获取城市ddl的代码示例:
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
{
var ddlCountry = sender as DropDownList;
var ddlCity = ddlCountry.Parent.FindControl("ddlCity") as DropDownList;
ddlCity.DataSource = GetCities(ddlCountry.SelectedValue);
ddlCity.DataBind();
}
您应该记住,将转发器与不同的数据集进行数据绑定可能会弄乱下拉列表的ID,从而搞乱了SelectedIndexChanged事件的触发,因为此事件依赖于将发布的值与viewstate /比较controlstate值两者都附加到控件ID。