【问题标题】:asp.net pass value from javascript to control on a modal popupasp.net 从 javascript 传递值以控制模式弹出窗口
【发布时间】:2017-09-26 16:48:45
【问题描述】:

好的,我更改了标题,因为我无法使用以前的方法到达任何地方,所以我回到原来的问题:如何将通过 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,然后在页面加载中使用它们,但随后表格选择不再起作用,因为在每次选择时,页面都会因 url 更改而刷新. 请任何人,我完全迷失了,而不是因为缺乏尝试!

老问题 asp.net 在 onclientclick 中将控件值作为参数传递

我发现了类似的问题,但没有人回答我的问题(或者至少,我无法使任何工作正常进行)。 我想将一些参数连接到活动页面的 url,例如 Home.aspx?col_fr=2,而不是固定的“2”,我想传递隐藏字段的值。我怎样才能做到这一点?

这是我当前的代码:

<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;">

谢谢

【问题讨论】:

  • 这种方法的一些细节或外部参考?谢谢

标签: javascript asp.net vb.net webforms


【解决方案1】:

只需将参数代码移动到类似 javascript 的函数中

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

HTML

<asp:LinkButton runat="server" ID="lnkAddDip"  OnClick="lnkAddDip_Click" OnClientClick="getURL()">

【讨论】:

  • 我知道我之前的问题没有去任何地方,所以我用真正的目标更新了它。请检查更新的问题,谢谢
【解决方案2】:

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

Popup 可以是页内 div 或其他页面。如果是page,可以很方便的在url中传递参数,如果是inpage div,可以获取隐藏字段值。

你可以找到 jquery 覆盖作为厚框:只需将 css 和 js 添加到您的站点,链接上的正确类并修复要打开的 url。

使用其他页面的解决方案

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

前期

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

待办事项

  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
       });
    }
    

然后在Yourpage.aspx中可以使用url参数“ids”。

代码未经测试!

【讨论】:

  • 这种方法的一些细节或外部参考?谢谢
  • 您是否已经在 Google 上找到了厚盒形式的叠加插件?
  • 是的,我正在寻找如何在 asp.net 中使用它,但现在还不行。我不是 javascript 专家,我总是很难使用 jquery。事实上,出于这个原因,我通常不会。这就是我寻找非 jquery 解决方案的原因。
  • 谢谢你的好意,但我不能用它做我想做的事。我显示了thickbox,但是我无法从父级获取参数。我必须改变方法。
  • 如果你显示thickbox,这是第一步......你告诉你你不是一个js专家:D你在哪里存储要传递给thickbox的参数?
【解决方案3】:

最后我通过调整原始的 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 个值,因此添加代码后,隐藏字段会保持以前的值,直到用户选择其他值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多