WebUserControl动态内容

本文关键字:动态 WebUserControl | 更新日期: 2023-09-27 18:18:10

我创建了一个WebUserControl,它由三个html控件,两个按钮和一个输入文本组成。每个控件都有静态id,这是错误的吗?我不这么认为。控件事件是使用javascript初始化的,在控件交付给客户端之后,客户端告诉我,如果在同一页面上的这个用户控件每个都有不同的事件参数,他想要放5个。由于javascript采用TextBox UserID,因此触发的任何事件都会初始化所有用户控件。

代码如下:

            //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;
}

如果我添加另一个用户控件,它将被初始化为相同的一切,即使我已经改变了文档上的用户控件的ID。getElementByID部分,我希望每个用户控件都有自己的客户端id,以便每个都可以按照自己的方式进行操作?

WebUserControl动态内容

   //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();
        }
    }
}