2017-09-26 11 views
0

私は以前のアプローチでどこにも行かないのでタイトルを変更しました。元の質問に戻ります:どのように変数を渡すことができますかモーダルポップアップ上のテキストボックスにJavaScriptを介して? 私は既に更新パネルの内側または外側の親ページに隠しフィールドとテキストボックスを配置しようとしましたが、モーダルポップアップを開くリンクボタンをクリックすると、その値はデフォルトにリセットされます。 私はすでにさまざまな方法で検索して試しましたが、成功できません。asp.net javascriptの値をモーダルポップアップで制御する

リピーターにテーブルがあり、ユーザーが選択したセル(選択の開始セルと終了セル)を知る必要があります。ユーザーが1つのまたは複数のセルを選択したときに、私はここで、開始/終了値を持って、

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

ので:私はこのJavaScriptを使用して達成

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

そして、ユーザは、私がしたいLinkBut​​tonコントロールをクリックしたときこれらの値を使用して、表示されているモーダルポップアップのテキストボックスにテキストを書き込みます。私が言ったように、私はそれを動作させることはできません、私が結果を試したものは、ポップアップを表示するときに値が失われることです。に値を割り当てても、ポップアップを示すが表示されます。 これは私のLinkBut​​tonです:古い質問の背後にある考え方は、パラメータとしてURLに値を渡すと、ページのロード中にそれらを使用していますが、その後、テーブル選択はもう動作しませんでした

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

の理由すべての選択は、URLの変更のためにページが更新されます。 誰か、私は完全に失われているし、試して不足していない!

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

おかげ

+0

このアプローチの詳細または外部参照はありますか?ありがとうございました –

答えて

0

最後に、私は元のjavascript関数をチューニングしていました。 私は、ページ上の3のHiddenFieldを加えた後、私はこのビット

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つの値のために、追加されたコードでは、ユーザーが何か他のものを選択するまで、隠しフィールドは以前の値を維持します。

0

は、それはちょうど

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

のようなJavaScript関数Oパラメータコードを移動する必要がHTML形式

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

私は以前の質問でどこにも行かなかったので、私は本当の目標でそれを更新しました。更新された質問を確認してください、ありがとうございます –

0

UpdatePanelまたはModalポップアップサーバー側を使用しないでください。 Thickboxまたは同様のjqueryプラグインを使用してpopoupを開くことができます。

ポップアップは、インページdivまたは別のページにすることができます。ページの場合は、簡単にURLにパラメータを渡すことができます。ページ区切りの場合は、フィールド値を隠すことができます。

jquery overlayをThickboxとして見つけることができます。サイトにcssとjsを追加し、リンク上の正しいクラスを開き、URLを修正して開きます。別のページ

を使用して

ソリューションは、カラーボックス(http://www.jacklmoore.com/colorbox/)を使用することを想像:

PRE

をあなたのページにいくつかの隠しフィールドに変数の値を持っていると仮定し

TODO

  1. があなたのページにスクリプトセクションを追加し、クリックイベントにしてhtmlタグを追加するには、ページ

  2. ダウンロードにjqueryのを含めると、あなたのページでカラーボックス
  3. のCSSやJSを含める

    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"を使用できます。

コードはテストされていません!

+0

このアプローチの詳細や外部参照はありますか?ありがとうございました –

+0

thickboxとしてオーバーレイプラグインをGoogleで既に見つけましたか? – Emanuele

+0

はい、私はasp.netでそれを使用する方法を探していますが、今はそれがないです。私はjavascriptの専門家ではなく、私はいつもjqueryで作業するのに苦労しています。実際、このような理由から私は通常はしません。そのため、私は非jqueryソリューションを探していました。 –

関連する問題