隐藏的菲尔德总是从javaScript开始的



我创建了一个上下文菜单并与GridView关联时,当执行右键时。问题是,当按下该上下文菜单的按钮时,我想从一个Hiddenfield。但是它总是返回零。我一直在阅读,我认为这可能是因为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();
};

您无法从隐藏字段中获得值的原因与服务器标签有关。在这种情况下,&lt;%%>称为服务器标签,因此,它没有解决该值,而只是将静态字符串放在输出脚本中。

脚本:

document.getElementById('<%= lnkView.ClientID %>').value;

.aspx文件输出:

document.getElementById('cntMainPlaceHolder_MainContent_lnkView').value;

.js文件输出:

document.getElementById('<%= linkView.ClientID %>').value;

为了证明这一点,您可以在您正在工作的浏览器中打开代码检查器(F12很可能),并查看随附的脚本。您会看到其中有应该解决的标签。同样的概念也将适用于jQuery:

$('#<%= lnkView.ClientID %>').val();

最新更新