Hi,

I have a website on NET 2.0, there I have a textbox and after I change the text on it with a js function, try to save on the DB (I have to click on a imagebutton to save it), but on the postback the textbox.text property has the previous value.

I need some guidance on how to resolve this.

Here's my code:

JS inserted with a RegisterClientScriptBlock method: <-- This works fine

<script type="text/JavaScript"> 
function Calcular() {
if (!(isNaN(parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagSaldoPrevioPago').value)) && isNaN(parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagPagoActual').value)))) {
document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcSaldoPostPago').value = parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagSaldoPrevioPago').value) - parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagPagoActual').value);
} else {
document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcSaldoPostPago').value = '0.0';}
}
function ActualizaMonto() {
if (!(isNaN(parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagSaldoPrevioPago').value)) && isNaN(parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagPagoActual').value)))) {
document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagSaldoPrevioPago').value = parseFloat(document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagMontoTotal').value);
} else {
document.getElementById('ctl00_cphVentanillaAtencionMaster_txtdcPagMontoTotal').value = '0.0';}
}
</script>

on PostBack I try to do this:

oPagosBE.btPagActivo = True

oPagosBE.dcPagMontoTotal = Me.txtdcPagMontoTotal.Text
oPagosBE.dcPagPagoActual = Me.txtdcPagPagoActual.Text
oPagosBE.dcPagSaldoPrevioPago = Me.txtdcPagSaldoPrevioPago.Text   <--- THIS VALUE POSTBACKS WITH THE INITIAL VALUE (BEFORE JS)
oPagosBE.dtPagFechaRegistro = IIf(IsDate(Me.txtdtPagFechaRegistro.Text.Trim), Me.txtdtPagFechaRegistro.Text.Trim, #1/1/1900#)
oPagosBE.vcPagUsuarioRegistrante = Session.Item("vcUsuCodigo")
          
bExito = bPagosBL.Insertar(oPagosBE)

Thanks

Recommended Answers

All 6 Replies

I once had a similar challenge. The TextBox is not aware of the change you made because it is a server control and the change was not made on the server but on the client side.I Corrected the situation by changing my control to an html control. I hope this help.

It can be done,

Please use this form,

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
<script type="text/javascript">
function setval() {
    themsg = document.getElementById("<%=txtMessage.ClientID%>");
    themsg.value="Hello World!";
}
</script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="txtMessage" runat="server" Text=""></asp:TextBox>
        <asp:Button ID="btnSeeMessage" runat="server" Text="see" onclick="SeeMessage" />
    </form>
    <input id="cID" onclick="setval();" type="button" value="Set from client" />
</body>
</html>

From server side,

protected void SeeMessage(object sender, EventArgs e)
    {
        Response.Write(txtMessage.Text);
    }

Please use <%=ServerControlName.ClientID%> everytime you wanna access a server control from client side.

I used the "Control.ClientID" to reference my control, but no luck...

and I can't use a client side control, because I need to access it in the server also...

I gave up, I know there's a solution out there, but I have no time... I'm on a schedule... Thanks a lot!! to all of you... !!

It can be done,

Please use this form,

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
<script type="text/javascript">
function setval() {
    themsg = document.getElementById("<%=txtMessage.ClientID%>");
    themsg.value="Hello World!";
}
</script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="txtMessage" runat="server" Text=""></asp:TextBox>
        <asp:Button ID="btnSeeMessage" runat="server" Text="see" onclick="SeeMessage" />
    </form>
    <input id="cID" onclick="setval();" type="button" value="Set from client" />
</body>
</html>

From server side,

protected void SeeMessage(object sender, EventArgs e)
    {
        Response.Write(txtMessage.Text);
    }

Please use <%=ServerControlName.ClientID%> everytime you wanna access a server control from client side.

Anyone with a solution? Working on this for 3 days and dont know what to do.

Are you setting the initial value of the textbox during the page load?

Textbox is a server control,it loses value changed from javascript on postback.if u want to save the value,u can use hidden control which you can access in both client as well as server side.Please mark as answer if this works.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.