0

asp.net ページと updatepanel で asp.net formsview を使用しています。Insertemplate と EditTemplate の 2 つのテンプレートがあります。両方のテンプレートのインディーには、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 に答える