当我执行右键单击时,我创建了一个上下文菜单并与Gridview相关联。问题是,当按下该上下文菜单中的按钮时,我想从HiddenField获取值。但它总是返回null。我一直在阅读,我认为这可能是因为DOM没有完全加载,但我无法使用$(document).ready()来解决它。可能以错误的方式使用它。
如果您有任何想法,请告诉我
HTML:
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="../../../Scripts/PendientesDataGridContextMenu.js"></script>
<link href="../../../Styles/ContextMenu.css" rel="stylesheet" type="text/css" />
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:HiddenField ClientIDMode="static" runat="server" ID="hdnSomeField" />
<asp:HiddenField ClientIDMode="static" ID="fldNumeroCQCallTx" runat="server" />
<asp:HiddenField ID="fldNumeroCQMalaPractica" runat="server" />
<div id="myMenu" class="contextMenu">
<table style='width:100%;'>
<tr><td onclick="fnCargarfldNumeroCQCallTxYClickear();">Registrar</td></tr>
<tr><td onclick="fnDelete();">Registrar2</td></tr>
</table>
</div>
<asp:LinkButton ID="lnkCallTx" runat="server"
style="display:none" OnClick="lnkCallTx_Click" />
C#代码:
protected void Page_Load(object sender, EventArgs e)
{
//Associate Context Menu to Gridview
Page.ClientScript.RegisterStartupScript(GetType(), "Script", "fnLinkearContextMenu(); ", true);
}
Java脚本:
function fnLinkearContextMenu() {
$("#myMenu").hide();
$("table[id$='cntMainPlaceHolder_MainContent_PendientesGestionDeTareasDataGridView'] > tbody > tr").bind('contextmenu', function (e) {
$("#myMenu").hide();
e.preventDefault();
$("#myMenu").css({
top: e.pageY + "px",
left: e.pageX + "px",
position: 'absolute'
});
//document.getElementById('<%= lnkCallTx.ClientID %>').value = rowid;
$("#myMenu").show();
});
//Cuando realizan click izquierdo en otra parte de la pagina
$(document).bind('click', function (e) {
$("#myMenu").hide();
});
};
function fnCargarfldNumeroCQCallTxYClickear() {
var lnkView = document.getElementById('<%=lnkView.ClientID %>').value;
var lnkCallTx = document.getElementById('lnkCallTx');
lnkCallTx.click();
};
答案 0 :(得分:0)
您无法从隐藏字段中获取值的原因与服务器标记有关。在这种情况下,&lt; %%&gt;被称为服务器标签,因此他们必须点击后面的代码(aspx.cs文件)才能解析传入的值。在.js文件中,没有代码隐藏,所以不是解析值,而是只需将静态字符串放在输出脚本中即可。
脚本:
document.getElementById('<%= lnkView.ClientID %>').value;
.aspx文件输出:
document.getElementById('cntMainPlaceHolder_MainContent_lnkView').value;
.js文件输出:
document.getElementById('<%= linkView.ClientID %>').value;
为了证明这一点,您可以在您正在使用的浏览器中打开代码检查器(最有可能是f12)并查看包含的脚本。你会看到那里有&lt;%标签应该已经解决了。同样的概念也适用于JQuery:
$('#<%= lnkView.ClientID %>').val();