2017-09-18 9 views
0

aspxページに6つのドロップダウンがあります。クリックしたときにのみドロップダウンに値を設定する必要があります。 当初、私は6 ddlをすべてページに読み込んでいましたが、ページをロードするのにかなりの遅延があったので、このオプションをクリックするとddlを読み込むことができました。私は正しい答えをまだ見つけられず、diff solとqueryで試しました。クリックしたときにのみプルダウンが表示されます

ddlに「Onclick」、「Onmousedown」、「Onkeypress」が見つかりませんでした。 私は1つのオプションをstackoverflowでユーザーが共有しようとしました。

plsは以下のコードを見つけて問題の解決に役立ちます。あなたが任意の要素のための.focus機能を使用することができます

<td class="style10" > 
<asp:DropDownList runat="server" ID="ddlGM" Width="150px" AutoPostBack="True" onclick="javascript:clickHiddenButton();" onselectedindexchanged="ddlGM_SelectedIndexChanged" style="height: 22px" > 
    <asp:ListItem Value=0 Text="All"></asp:ListItem></asp:DropDownList><div style="display: none;"> 
    <asp:Button ID="btnHidden" runat="server" Text="Button" /> 
        </div></td> 

<script type="text/javascript"> 
function clickHiddenButton() { 
    var btn = document.getElementById('btnHidden'); 
    var ddl = document.getElementById('ddlGM'); 
    if (ddl.length == 1) { 
     btn.click(); 
    } 
} 
</script> 

protected void btnHidden_Click(object sender, EventArgs e) 
{ 
    DataView dvfilters = (DataView)(Cache["FiltersData"]); 
    dtt = dvfilters.ToTable(); 
    ddlGM.DataSource = dtt; 
    ddlGM.DataValueField = "GlobalMarket"; 

    ddlGM.DataBind(); 
    RemoveDuplicateItems(ddlGM); 
    SortDDL(ref ddlGM); 
    //ddlGM.Items.Insert(0, "All"); 
} 
+0

クリックするとddlを読み込むためにポストバックしないでください。 Ajax経由でddlとcall serverメソッドをクリックすると実行されるJavaScriptコードが必要です。サーバーメソッドはデータ(HTMLなし)のみを返し、JavaScriptコードはそのデータを使用してddl内の項目を作成する必要があります。 –

答えて

0

。フォーカス関数は、特定の関数がクリックされたりフォーカスが得られたりすると呼び出されます。私はあなたのためのサンプルコードを入れています。このコードは必要に応じて変更できます。

<script> 
    var bDataLoded = false; 
    $(document).ready(function() { 
     var ddVal = ''; 
     $('#ddlGM').focus(function() { 
      if (!bDataLoded) { 
       alert("hi"); 
       $('#ddlGM').append('<option value=' + 1 + '> + Test 1 + </option>'); 
       $('#ddlGM').append('<option value=' + 2 + '> + Test 2 + </option>'); 
       $('#ddlGM').append('<option value=' + 3 + '> + Test 3 + </option>'); 
       $('#ddlGM').append('<option value=' + 4 + '> + Test 4 + </option>'); 
       bDataLoded = true; 
      } 
      $('#ddlGM').blur(); 
     }) 
    }); 

</script> 

<body> 
<form id="form1" runat="server"> 
<div> 
    <asp:DropDownList runat="server" ID="ddlGM" Width="150px" AutoPostBack="True" style="height: 22px" > 
    </asp:DropDownList> 
</div> 
</form> 


これはあなたの問題を解決することを願っています。

関連する問題