0

Hi

I have a web form with a label on it. The content of that label is updated in response to some javascript on the client webpage.
Upon completion of some data entry, a button is clicked which adds that labels data (and others) to a gridview.

Basically this all works except that I can not retrieve thae updated value of the label. The grid addrow routine always finds the labels default value and writes that instead.
I assume this is a postback related issue so I created a hidden field and wrote the value to that also and then pull that for the grid write. Same problem...

How can I write a value to a label with javascript and then pull that value (server side) in asp.net (VB) for writing into the grid?


This code writes to the label and hidden field-

function jsCalcFrames() {
        var DurFrames = calcDurFrames();
        var sVal1 = document.getElementById('<%= lbl_Segment_SoM.ClientID %>').textContent;//.innerText; supposedly ie only
        var SoMframes = ConvertToFrames(sVal1);
        var EoMframes = ConvertFromFrames(DurFrames + SoMframes - 1);
        //  lbl_Segment_EoM.Text = EoMframes; //remove 1 as eom is before som
        document.getElementById('<%= lbl_Segment_EoM.ClientID %>').textContent = EoMframes;
        document.getElementById('<%= hidden_Segment_EoM.ClientID %>').textContent = EoMframes;
        //write to hidden field for persistence
        if (DurFrames  > 0) {
            Me.btnAppendSegment.Enabled = True;
        }
    }

This partial code is triggered by the forms append button -

Protected Sub btnAppendSegment_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAppendSegment.Click
        appendSegmentArray(segIndex)  
end sub

    Private Sub appendSegmentArray(ByVal _index As Integer)
        If xmlCheck_SegTitle <> 14 Then
            MsgBox("You must give a title to this segment!", MsgBoxStyle.OkOnly Or MsgBoxStyle.Exclamation, "Segment data error!")
            Exit Sub
        End If

        Dim sValDur As String = Me.txt_Segment_Dur_H.Text + ":" + _
                                Me.txt_Segment_Dur_M.Text + ":" + _
                                Me.txt_Segment_Dur_S.Text + ":" + _
                                Me.txt_Segment_Dur_F.Text

        dt = TryCast(ViewState("SegmentData"), DataTable)

        dt.Rows.Add(CInt(Me.lbl_Segment_Number.Text), Me.txt_Segment_Title.Text, Me.lbl_Segment_SoM.Text, Me.hidden_Segment_EoM.Value, sValDur)
        dt.Rows.Add(CInt(Me.lbl_Segment_Number.Text), Me.txt_Segment_Title.Text, Me.lbl_Segment_SoM.Text, Me.lbl_Segment_EoM.Text, sValDur) '+index
        '  ExecuteInsert(CInt(Me.lbl_Segment_Number.Text), Me.txt_Segment_Title.Text, Me.lbl_Segment_SoM.Text, Me.lbl_Segment_EoM.Text, sValDur)
        ViewState.Add("SegmentData", dt)
        dgvSegments.DataSource = dt


        dgvSegments.DataBind() 'updates

'other code snipped off

This line writes the gride -
dt.Rows.Add(CInt(Me.lbl_Segment_Number.Text), Me.txt_Segment_Title.Text, Me.lbl_Segment_SoM.Text, Me.hidden_Segment_EoM.Value, sValDur)

Me.hidden_Segment_EoM.Value has the equiv label of Me.lbl_Segment_EoM.Text

In this function, Me.lbl_Segment_EoM.Text always has the forms initial value despite that value having changed in the client form.
I need to write the reality client value.

Any clues anyone?

2
Contributors
4
Replies
5
Views
6 Years
Discussion Span
Last Post by malcomm
0

I had this problem once and although my solution probably isn't the correct one, I had a hidden field with a textbox (not a label) to hold the value. While label text updated via javascript doesn't seem to be available server side, the contents of a textbox is.

Hope that helps,
Steve

0

Thanks Steve

That was the solution I hit upon also but I cannot retreive the correct value from the hidden field either.
I can write and read it in Java but the vb/asp returns a null value.
Its like the vb/asp is reading the values for the initially created page rather than the updated one thats doing the postback.

Anyone else?

Malcom

0

In case it helps, here's my code for the control creation. maybe I'm missing something here?

<asp:label ID="lbl_Segment_EoM" runat="server" height="20px" 
               width="135px" font-size="Medium" style="text-align: center" 
               Borderstyle="Inset" Borderwidth="1px" Font-Names="BankGothic Md BT"                      
               ToolTip="The programme segments timecode 'end of message'.  This value will be automatically calculated based on the SoM value and the duration value that you enter.">00:00:00:00</asp:label>      
           <asp:HiddenField ID="hidden_Segment_EoM" runat="server" />

Thanks
Malcom

0

OK figured this one out.
I stupidly had the wrong setting for the hidden control. 'TextContent' instead of 'value'
Original code was-
document.getElementById('<%= hidden_Segment_EoM.ClientID %>').textContent = EoMframes;
Should have been -
document.getElementById('<%= hidden_Segment_EoM.ClientID %>').value = EoMframes;

All good until the next problem.
Thanks for the help

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.