2011-12-19 13 views
0

WebUserControlを作成しました。このWebUserControlは、3つのhtmlコントロール、towボタン、および1つの入力テキストで構成されています。これらのコントロールのそれぞれは静的IDを持っていますが、間違っていると思います。制御イベントはJavaScriptを使用して初期化され、クライアントにコントロールが渡された後、同じページでこのユーザーコントロールがイベントごとに異なるパラメータを持つ場合、Fiveを配置することを教えてくれました。トリガされたイベントは、JavaScriptがTextBox UserIDを取るので、すべてのユーザーコントロールを初期化します。ここでWebUserControlの動的コンテンツですか?

はコードです:

  //Markup code in user control, each control have a static id 
      <input id="Text_Output" type="text" runat="server" onkeypress="return saveValue(event);" /> 

      <input id="Button_Add" type="button" runat="server" value="ˆ" 
       style="width:21px; height:14px;vertical-align:bottom;" /> 

      <input id="Button_Subtract" type="button" runat="server" value="ˇ" 
       style="width:21px; height:14px;vertical-align:top;" /> 

    //Javascript function Add() in user control 
    function Add(incValue, percValue) { 

    var outputValue = document.getElementById('<%=Text_Output.ClientID%>').value; 
    var incremeantValue = incValue; 
    var precsionValue = percValue; 

    if (outputValue.indexOf(".") > 0) { 
     var total = (parseFloat(outputValue) + parseFloat(incremeantValue)); 
     document.getElementById('<%=Text_Output.ClientID%>').value = parseFloat(total).toFixed(parseInt(percValue)).toString(); 
    } 
    else { 
     if (percValue == 0) { 
      document.getElementById('<%=Text_Output.ClientID%>').value = parseInt((parseFloat(outputValue) + parseFloat(incremeantValue)).toString()); 
     } 
     else { 
      var total = (parseFloat(outputValue) + parseFloat(incremeantValue)); 
      document.getElementById('<%=Text_Output.ClientID%>').value = parseFloat(total).toFixed(parseInt(percValue)).toString(); 
     } 
    } 
} 




//Markup code used in webpage 
//This button will connect(initialize) the events for the user control 
<input id="Button1" type="button" value="button" onclick="IntilizeControl()" /><br /> 
<My:UserInfoBoxControl ID="JSNumeric_Control" runat="server" /> 

    //Javasript InilizeControl() function 
    function IntilizeControl() { 

    var Button_Add = document.getElementById('<%=JSNumeric_Control.FindControl("Button_Add").ClientID %>'); 
    //Add(IncrementValue,PrecesionValue) 
    Button_Add.setAttribute("onclick", "Add(1,1)", '<%=JSNumeric_Control.FindControl("Text_Output").ClientID%>'); 

    var Button_Subtract = document.getElementById('<%=JSNumeric_Control.FindControl("Button_Subtract").ClientID%>'); 
    //Subtract(IncrementValue,PrecesionValue) 
    Button_Subtract.setAttribute("onclick", "Subtract(1,1)"); 

    var Text_Output = document.getElementById('<%=JSNumeric_Control.FindControl("Text_Output").ClientID%>'); 
    alert('<%=JSNumeric_Control.FindControl("Text_Output").ClientID%>'); 
    Text_Output.setAttribute("onkeyup", "check()"); 
    Text_Output.value = 0; 
} 

私は別のユーザーコントロールを追加する場合、私がのdocument.getElementById部にユーザーコントロールのIDを変更した場合でも、同じすべてで初期化されます、私はそれぞれのユーザーコントロールが独自のクライアントIDを持つようにして、それぞれがそれに対応できるようにしたいと思います。

+0

私はそれを解決しました。ユーザーコントロール内のJavaScriptコントロールコードを変更して、新しいパラメータcontrolClientIDを受け入れ、Text_Output –

答えて

0
//Send the controlClientID from the source code. 
    function Add(incValue, percValue,controlID) { 
    //The controlID.name.replace(/\$/g, '_') will replace the $ sign by the _ character. 
    var outputValue = document.getElementById(controlID.name.replace(/\$/g, '_')).value; 
    var incremeantValue = incValue; 
    var precsionValue = percValue; 

    if (outputValue.indexOf(".") > 0) { 
     var total = (parseFloat(outputValue) + parseFloat(incremeantValue)); 
     document.getElementById(controlID.name.replace(/\$/g, '_')).value = parseFloat(total).toFixed(parseInt(percValue)).toString(); 
    } 
    else { 
     if (percValue == 0) { 
      document.getElementById(controlID.name.replace(/\$/g, '_')).value = parseInt((parseFloat(outputValue) + parseFloat(incremeantValue)).toString()); 
     } 
     else { 
      var total = (parseFloat(outputValue) + parseFloat(incremeantValue)); 
      document.getElementById(controlID.name.replace(/\$/g, '_')).value = parseFloat(total).toFixed(parseInt(percValue)).toString(); 
     } 
    } 
} 
関連する問題