asp.net从javascript传递值来控制模态弹出窗口

时间:2017-09-26 16:48:45

标签: javascript asp.net vb.net webforms

好的,我改变了标题,因为我无法通过以前的方法获得任何地方,所以我回到原来的问题:我怎样才能将通过javascript获得的变量传递给模态弹出窗口上的文本框? 我已经尝试在更新面板内部或外部的父页面上放置一个隐藏字段甚至文本框,但是当我单击打开模式弹出窗口的链接按钮时,它们的值将重置为默认值。 我已经搜索并尝试了许多不同的方法,但我无法成功。

我在转发器中有一个表,我需要知道用户选择的单元格:选择的开始和结束单元格。我用这个javascript完成了这个:

$(function () {
            var mouse_down = false;
            var row, col;    // starting row and column
            var $tr;

            $("#tblPersonale td")
                .mousedown(function () {
                    $("#col_to").html('?');
                    mouse_down = true;

                    // clear last selection for a fresh start
                    $(".highlighted").removeClass("highlighted");
                    $(this).addClass("highlighted");

                    $tr = $(this).parent();
                    row = $tr.parent().find("tr").index($(this).parent());
                    col = $tr.find("td").index($(this));

                    $("#row").html(row);
                    $("#col_fr").html(col - 1);



                    return false; // prevent text selection
                })

                .mouseover(function () {
                    if (mouse_down) {
                        $("#col_to").html('?');
                        if ($tr[0] === $(this).parent()[0]) {
                            var col2 = $(this).parent().find("td").index($(this)); // current column
                            var col1 = col;
                            if (col > col2) { col1 = col2; col2 = col; }

                            $("#col_fr").html(col1-1);
                            $("#col_to").html(col2 - 1);

                            // clear all selection to avoid extra cells selected
                            $(".highlighted").removeClass("highlighted");

                            // then select cells from col to col2
                            for (var i = col1; i <= col2; i++) {
                                if (col1>1){
                                    $tr[0].cells[i].className = "highlighted";}
                            }
                        }

                    }
                })
                .bind("selectstart", function () {
                    return false; // prevent text selction in IE
                })

            $(document)
                .mouseup(function () {
                    mouse_down = false;
                });
        });

因此,当用户选择一个或多个单元格时,我在这里有开始/结束值:

<span id="col_fr" runat="server" enableviewstate="true">?</span>
<span id="col_to" runat="server" enableviewstate="true">?</span>

然后,当用户单击链接按钮时,我想使用这些值在显示的模式弹出窗口的文本框中写入文本。正如我所说的,我无法使它工作,我尝试的结果是,当弹出窗口显示时,值会丢失,即使我在显示弹出窗口之前将值分配给全局变量。 这是我的链接按钮:

<asp:LinkButton runat="server" ID="lnkAddDip"  OnClick="lnkAddDip_Click">

旧问题背后的想法是将值作为参数传递给url,然后在页面加载中使用它们,但随后表格选择不再起作用,因为每次选择页面都会因为网址改变。 请任何人,我完全迷失了,而不是因为没有尝试!

旧问题 asp.net将控件值作为参数传递给onclientclick

我发现了类似的问题,但没有人回答我的问题(或者至少,我无法解决任何问题)。 我想连接到活动页面的url一些参数,如Home.aspx?col_fr = 2,而不是固定的&#34; 2&#34;我想传递一个隐藏字段的值。我该如何实现呢?

这是我目前的代码:

<asp:hiddenfield runat="server" id="hdnColonnaDa" EnableViewState="true"  />
<asp:LinkButton runat="server" ID="lnkAddDip"  OnClick="lnkAddDip_Click" OnClientClick="window.location='Home.aspx?col_fr=2';return false;">

由于

3 个答案:

答案 0 :(得分:0)

只需将参数代码移动到像

这样的javascript函数即可
fakepath

<强> HTML

function getURL(){
   var param1 = someField.value/*get field value*/;
   var url= "Home.aspx?col_fr="+ param1;
   window.location= url;
  return false;
}

答案 1 :(得分:0)

不要使用UpdatePanel或Modal弹出服务器端。您可以使用Thickbox或类似的jquery插件来打开popoup。

弹出窗口可以是inpage div或其他页面。如果是页面,您可以轻松地在网址中传递参数,如果是inpage div,则可以获取隐藏的字段值。

你可以找到jquery overlay作为Thickbox:只需在你的网站上添加css和js,在链接上添加正确的类并修复要打开的网址。

使用其他网页的解决方案

想象一下使用Colorbox(http://www.jacklmoore.com/colorbox/):

<强> PRE

假设您在页面的某个隐藏字段中包含变量值

<强> TODO

  1. 在您的信息页中包含jquery
  2. 下载并包含colorbox的css和js
  3. 在您的页面中添加带有点击事件的html标记
  4. 在页面中添加脚本部分

    function openLink()
    {       
        var hiddenValue= $("#col_fr").text(); // or .html()    
        var urlToOpen = "yourpage.aspx?ids=" + hiddenValue;    
        $.colorbox({
                iframe: true,    
                width: "75%",    
                height: "75%",    
                href: urlToOpen
       });
    }
    
  5. 然后在Yourpage.aspx中,你可以使用url参数&#34; ids&#34;。

    代码未经过测试!

答案 2 :(得分:0)

最后,我通过调整原始的javascript函数做了我想要的。 我在页面上添加了3个隐藏字段,然后我添加了这个位

var hdncol_fr = document.getElementById("hdncol_fr").value;
var hdncol_to = document.getElementById("hdncol_to").value;
var hdnrow = document.getElementById("hdnrow").value;
if (hdncol_fr = '?'){
   document.getElementById("hdncol_fr").value = col - 1;
   document.getElementById("hdncol_to").value = col2 - 1;
   document.getElementById("hdnrow").value = row;
}

这样只有当用户主动选择某些单元格时才设置隐藏字段值,当有回发事件时,javascript函数返回'?'对于3个值,因此使用添加的代码,隐藏字段将保留先前的值,直到用户选择其他值。