Access an asp:hiddenfield control in JavaScript

前端 未结 6 1728
南旧
南旧 2020-12-21 00:10

What is the best way to access an ASP.NET HiddenField control that is embedded in an ASP.NET PlaceHolder control through JavaScript? The Visible attribute is set to false i

相关标签:
6条回答
  • 2020-12-21 00:33

    Try this:

    function popup(lid)
    {
        var linkid=lid.id.toString();    
        var lengthid=linkid.length-25;    
        var idh=linkid.substring(0,parseInt(lengthid));  
        var hid=idh+"hiddenfield1";
    
        var gv = document.getElementById("<%=GridViewComplaints.ClientID %>");
        var gvRowCount = gv.rows.length;
        var rwIndex = 1;
        var username=gv.rows[rwIndex].cells[1].childNodes[1].innerHTML;
        var prdid=gv.rows[rwIndex].cells[3].childNodes[1].innerHTML;
        var msg=document.getElementById(hid.toString()).value;
        alert(msg);
    
    
        document.getElementById('<%= Labelcmpnme.ClientID %>').innerHTML=username;
        document.getElementById('<%= Labelprdid.ClientID %>').innerHTML=prdid;
        document.getElementById('<%= TextBoxviewmessage.ClientID %>').value=msg;
        return false;
    }
    


    <ItemTemplate>
        <asp:LinkButton ID="LabelComplaintdisplayitem" runat ="server"   Text='<%#Eval("ComplaintDisp").ToString().Length>5?Eval("ComplaintDisp").ToString().Substring(0,5)+"....":Eval("ComplaintDisp") %>' CommandName ="viewmessage" CommandArgument ='<%#Eval("username")+";"+Eval("productId")+";"+Eval("ComplaintDisp") %>' class='basic' OnClientClick =" return popup(this)"></asp:LinkButton>
        <asp:HiddenField ID="hiddenfield1" runat ="server" Value='<%#Eval("ComplaintDisp")%>'/>
    </ItemTemplate>
    
    0 讨论(0)
  • 2020-12-21 00:34

    If the place holder visibility is set to false, it will never be rendered , and the hidden field value will be only stored in the ViewState of the page.

    just one question, why are you setting the visibility of the place holder to be false , if its containing a hidden field?

    Anyway one possible way to get over this issue, is adding a TextBox or Label object , and set the display CSS style of it to "none" , then in your code copy whatever you are putting in the hidden field into the textbox/lable text property, this way you can easily read the value using javascript , since the textbox/label will be rendered but not visible to others, though this might not be that safe thing to do.

    0 讨论(0)
  • 2020-12-21 00:40

    My understanding is if you set controls.Visible = false during initial page load, it doesn't get rendered in the client response. My suggestion to solve your problem is

    1. Don't use placeholder, judging from the scenario, you don't really need a placeholder, unless you need to dynamically add controls on the server side. Use div, without runat=server. You can always controls the visiblity of that div using css.
    2. If you need to add controls dynamically later, use placeholder, but don't set visible = false. Placeholder won't have any display anyway, Set the visibility of that placeholder using css. Here's how to do it programmactically :

      placeholderId.Attributes["style"] = "display:none";

    Anyway, as other have stated, your problems occurs because once you set control.visible = false, it doesn't get rendered in the client response.

    0 讨论(0)
  • 2020-12-21 00:40

    Visible doesn't actually make it visible, you can leave it default. Just runat="server" and use its .Value.

    0 讨论(0)
  • 2020-12-21 00:43

    Instead of making ".visible=false", change the style to "display: none;". That will render your control but make it invisible.

    0 讨论(0)
  • 2020-12-21 00:52

    If the Visibility is set to false server-side, the placeholder won't be rendered and you won't be able to access anything inside it from JavaScript. Your code should work when the placeholder is visible="true"

    Get rid of the placeholder, leave the hidden field empty at first, after the search populate it.

    0 讨论(0)
提交回复
热议问题