0

datalistCity に 2 つの dropdownCountry を含むデータリストと、dropdownCountry と datalistCity を動的に追加するボタンがあります。

aspx コード

 <asp:DropDownList ID="DDSubOffCity"   OnSelectedIndexChanged='GetSelectedCityValue' AutoPostBack="false" runat="server" Width="355px"> <asp:ListItem Value="0">Select</asp:ListItem> </asp:DropDownList>
 <asp:DropDownList ID="DDSubOffCountry" runat="server" OnSelectedIndexChanged='GetSelectedCountryValue'  AutoPostBack="true" Width="355px">  <asp:ListItem Value="0">Select</asp:ListItem> </asp:DropDownList>

コード ビハインド データリスト アイテムバウンド

DDSubOffCountry.Attributes.Add("onChange", "javascript:NewBufferDDCountryValue('" + DDSubOffCountry.ClientID + "','" + DDSubOffCountry.SelectedValue + "');");
            DDSubOffCity.Attributes.Add("onChange", "javascript:NewBufferDDCityValue('" + DDSubOffCity.ClientID + "', '" + DDSubOffCity.SelectedValue + "');");}

JavaScript コード

function NewBufferDDCountryValue(objddCountry) 
        {
            try {
                if (objddCountry != 'null') {
                    var ctlDDl = objddCountry.toString();
                    var parts = ctlDDl.split('_', 4);
                    var indexId = parts[3];
                    var objHidden = document.getElementById('ContentPlaceHolder1_DataListOffices_hiddenDDSubOffCountry_' + indexId);
                    objHidden.value = document.getElementById(objddCountry).value;
                }
            } catch (e) { alert(e); }
        }

        function NewBufferDDCityValue(objddCity) 
        {
            try {
                if (objddCity != 'null') {
                    var ctlDDl = objddCity.toString();
                    var parts = ctlDDl.split('_', 4);
                    var indexId = parts[3];
                    var objHidden = document.getElementById('ContentPlaceHolder1_DataListOffices_hiddenDDSubOffCity_' + indexId);
                    objHidden.value = document.getElementById(objddCity).value;
                }
            } catch (e) { alert(e); }    
        }

onselectedindexchange イベントが発生したときにコード ビハインドで呼び出される関数

public void GetSelectedCountryValue(object sender, EventArgs e)
    {
        DropDownList drp = (DropDownList)sender;

        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "javascript:NewBufferDDCountryValue('" + drp.ClientID + "');", true);
        var city = new City();
        string indexer = drp.ClientID;
        indexer=indexer.Split(Convert.ToChar("_"))[3];
        string senderCity ="ContentPlaceHolder1_DataListOffices_DDSubOffCity_" + indexer;

        DropDownList drpCity;
       /*****************/

クライアント ID のみが既知の場合にコントロールを見つける方法。または、文字列を dropdownCity にキャストして入力する方法 drpCity = FindControl(senderCity);

       /********************/

        city.populateCity(drpCity, drp.SelectedValue);
    }

GetSelectedCountryValue 関数では、dropdownCountry のインデックスを持っていることがわかります。現在、コントロールの名前を知っていますが、ClientId だけでそのコントロールを見つける方法を理解できませんでした。

4

1 に答える 1

0

GetSelectedCountryValue は C# メソッドであるため、DDSubOffCountry.SelectedItem.Text を直接使用できます。これは、DropDownList が Web サーバー コントロールであるためです。

于 2012-07-04T11:11:12.967 に答える