asp.net - tutorial - que es asp net
Acceda a un control asp: hiddenfield en JavaScript (6)
Prueba esto:
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>
¿Cuál es la mejor manera de acceder a un control ASP.NET HiddenField que está incrustado en un control ASP.NET PlaceHolder a través de JavaScript? El atributo Visible se establece en falso en la carga de la página inicial y se puede cambiar a través de una devolución de llamada AJAX.
Aquí está mi código fuente actual:
<script language="javascript" type="text/javascript">
function AccessMyHiddenField()
{
var HiddenValue = document.getElementById("<%= MyHiddenField.ClientID %>").value;
//do my thing thing.....
}
</script>
<asp:PlaceHolder ID="MyPlaceHolder" runat="server" Visible="false">
<asp:HiddenField ID="MyHiddenField" runat="server" />
</asp:PlaceHolder>
EDITAR: ¿Cómo configuro el estilo para una etiqueta div en el código ascx detrás en C #? Esta es la descripción del código detrás: CssStyleCollection HtmlControl.Style
ACTUALIZACIÓN: Reemplacé el asp: hiddenfield con una etiqueta asp: y obtengo un "indefinido" cuando visualizo la variable HiddenValue en un cuadro de alerta. ¿Cómo resolvería esto?
ACTUALIZACIÓN 2: Seguí adelante y refactoré el código, sustituí el control de campo oculto con un control de cuadro de texto y configuré el estilo para "mostrar: ninguno;". También eliminé la función JavaScript (fue utilizada por un control CustomValidator) y la reemplacé con un control RequiredFieldValidator.
En lugar de hacer ".visible = false", cambie el estilo a "display: none;". Eso controlará pero lo hará invisible.
Según entiendo, si establece controles. Visible = falso durante la carga de la página inicial, no se representa en la respuesta del cliente. Mi sugerencia para resolver su problema es
- No use marcador de posición, a juzgar por el escenario, realmente no necesita un marcador de posición, a menos que necesite agregar controles dinámicamente en el lado del servidor. Use div, sin runat = servidor. Siempre puedes controlar la visibilidad de ese div usando css.
Si necesita agregar controles dinámicamente más tarde, use marcador de posición, pero no configure visible = false. El marcador de posición no tendrá ninguna pantalla de todos modos. Establezca la visibilidad de ese marcador de posición mediante css. He aquí cómo hacerlo programáticamente:
placeholderId.Attributes ["style"] = "display: none";
De todos modos, como otros han indicado, los problemas se producen porque una vez que configura control.visible = false, no se procesa en la respuesta del cliente.
Si la Visibilidad está configurada en el lado del servidor falso, el marcador de posición no se representará y no podrá acceder a nada dentro de él desde JavaScript. Tu código debería funcionar cuando el marcador de posición es visible = "verdadero"
Deshazte del marcador de posición, deja el campo oculto vacío al principio, después de que la búsqueda lo rellene.
Si la visibilidad del marcador de posición se configura como falsa, nunca se representará, y el valor del campo oculto solo se almacenará en el ViewState de la página.
solo una pregunta, ¿por qué está estableciendo la visibilidad del marcador de posición como falso, si contiene un campo oculto?
De todos modos, una forma posible de superar este problema es agregar un objeto TextBox o Label, y establecer el estilo CSS de la pantalla en "ninguno", luego en el código copiar lo que está poniendo en el campo oculto en el cuadro de texto / texto de la etiqueta propiedad, de esta manera usted puede leer fácilmente el valor usando javascript, ya que el cuadro de texto / etiqueta será renderizado pero no visible para otros, aunque esto podría no ser tan seguro de hacer.
Visible no lo hace visible, puede dejarlo predeterminado. Simplemente runat = "server" y use su .Value.