[英]Passing value from Gridview to Hiddenfield thru Javascript returns null
[英]HiddenField always NULL, from javascript
當右鍵單擊時,我創建了一個上下文菜單並關聯到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();
};
無法從隱藏字段中獲取值的原因與服務器標簽有關。 在這種情況下,<%%>被稱為服務器標記,因此它們必須擊中后面的代碼(aspx.cs文件)才能解析傳入的值。在.js文件中,沒有代碼,因此,與其解析該值,不如將靜態字符串放入輸出腳本中。
腳本:
document.getElementById('<%= lnkView.ClientID %>').value;
.aspx文件輸出:
document.getElementById('cntMainPlaceHolder_MainContent_lnkView').value;
.js文件輸出:
document.getElementById('<%= linkView.ClientID %>').value;
為了證明這一點,您可以在使用的瀏覽器中打開代碼檢查器(很可能是f12),然后查看包含的腳本。 您將看到其中有<%標記應已解決。 同樣的概念也將適用於JQuery:
$('#<%= lnkView.ClientID %>').val();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.