0

我在我的 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
            }

        }
    }
4

1 回答 1

0

代码此时抛出异常,因为它没有对表行的引用。

确保将行引用为服务器端控件

<tr id="trState" runat="server"  >

并将其转换为表格行而不是 HtmlGenericControl

 System.Web.UI.HtmlControls.HtmlTableRow trState = nc.FindControl("trState") as System.Web.UI.HtmlControls.HtmlTableRow;
于 2012-04-07T11:48:10.237 回答