我在asp.net页面和updatepanel中使用了asp.net formsview。它有两个模板Insertemplate和EditTemplate。独立两个模板都有一个id为ddlCountry的下拉列表。我有一个包含所有国家/地区的下拉列表。我正在显示州下拉列表,如果国家/地区是美国并且想隐藏显示州下拉列表的行如果国家/地区是非美国。我正在使用以下代码,但它无法正常工作:
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
{
Control c = (Control)sender;
Control nc = c.NamingContainer;
if (nc.ID == "fvBillTo" && rblShipSelect.SelectedValue == "billing")
{
setShippingAndTaxesDisplay();
DropDownList ddlCountry = c as DropDownList;
if (ddlCountry.SelectedItem != null && ddlCountry.SelectedItem.Value == "001")
{
HtmlGenericControl trState = nc.FindControl("trState") as HtmlGenericControl;
trState.Visible = true;
}
else
{
HtmlGenericControl trState = nc.FindControl("trState") as HtmlGenericControl;
trState.Visible = false; // code stops here
}
}
}
答案 0 :(得分:0)
代码在此时抛出异常,因为它没有对表行的引用。
确保将引用的行作为服务器端控件
<tr id="trState" runat="server" >
将其转换为表格行而不是HtmlGenericControl
System.Web.UI.HtmlControls.HtmlTableRow trState = nc.FindControl("trState") as System.Web.UI.HtmlControls.HtmlTableRow;