-1

私は状況で立ち往生しています、WebサイトはASP.NET1.1で実行されています

いくつかのデータを含むページを読み込んでいます。このページには、HTMLテーブルがあります。 各行で、ステータス(アクティブ/非アクティブ)を1つにロードし、メッセージを別の行にロードしています。

クリックすると保存ボタンがあり、ステータスとメッセージがデータベースに保存されます。

データがHTMLテーブルにあるため、ボタンがクリックされている間、データが失われています。

ページの読み込み時にステータスとメッセージをグローバルJavascript変数に保持する1つのオプションを試しました。しかし、ボタンがクリックされたときにもそれを失います。

データを保存するJSコード:

// To store all active or inactive feature values.
var arrType = [];
var interiorValues = [arrType];
var exteriorValues = [];
var mechanicalValues = [];
var standardValues = [];

function StoreChromeVallue()
{
    var $jDecode = jQuery.noConflict();
    var table = document.getElementById('dlInterior');

    for (var i = 1, row; row = table.rows[i]; i++)
    {
        for (var j = 0, col; col = row.cells[j]; j++) 
        {
            var imagePath = $jDecode(row.cells[0]).find('img:first').attr('src');

            if(imagePath == "../icon_active1.gif")
            {
                arrType.push("active");
            }
            else if(imagePath == "../icon_deleted1.gif")
            {
                arrType.push("deleted");
            }
            else
            {
                arrType.push("active");
            }

            var featureValue = $jDecode(row.cells[1]).text();
            arrType.push(featureValue);

            arrType.push("Interior");

            interiorValues.push(arrType);
        }
    }
    alert(interiorValues[5][0]);
}

データが保存されるHTMLテーブル

<TABLE id="dlInteriors" Width="300" Runat="server" CellSpacing="0" CellPadding="0">
    <TR>
        <TD id="interiortd" vAlign="top" width="350" runat="server"></TD>
    </TR>
</TABLE>

行はページの読み込み時に動的に追加されます。

これをどのように進めるべきか教えてください。

4

3 に答える 3

0

ポストバック中にHTMLページのすべての値/文字列を簡単に取得することはできません。Request.params [""]を使用して、ポストバックでinput、selectなどのフォームフィールドを取得できます。

ただし、非表示の変数を試すこともできます(ここでは、HTMLテーブルの文字列値の代替ビューステートです)

いつ&何を保存するか/保存する方法/ポストバックでアクセスする方法。

上記の質問については、以下の手順を試すことができます。

  1. フォームを送信する前に、JavaScript関数'saveTableValues()'を起動して、HTMLテーブルをループし、各行のオブジェクト(var)を作成します。
  2. javascriptオブジェクト配列を準備します(ループごとにアイテムをプッシュするだけです)
  3. それをJSON文字列に変換し、 JSON文字列全体を非表示フィールドに割り当てます
  4. ポストバックする//JSでtrueを返すだけ
  5. コードビハインドでは、Request.Params [""]を使用するか、サーバー側の制御である場合はhdnField.Textのような通常の方法でアクセスしてみてください
  6. コード動作では、JavaScriptシリアライザー またはJSON.Netを使用して、JSON文字列をコレクションに変換します。ここでJSON.Netを推奨する

これはあなたを助けるかもしれません。

編集:

あなたのウェブサイトは1.1で実行されているので、それらのシリアライザーdllがあなたを助けるかどうかはわかりません。したがって、JSONではなくXML形式で試してください。1.1フレームワーク用のJSONシリアライザーdllが存在するかどうかわからない

于 2012-12-11T06:44:25.597 に答える
0

このようにサーバーで実行するテーブルを作成します

<table id="users" runat="server">

また、HtmlTableクラスを使用してアクセスできるようになります。必要に応じて、テーブルの行から動的にDataTableを作成し、セッションに保存します。http://msdn.microsoft.com/en-us/liをご覧ください

于 2012-12-11T06:46:59.027 に答える
0

Jqueryを使用して行の値を取得します。次に、データを非表示フィールドに保存します。こちらです:

<script type="text/javascript">

     function getTableValues() {


         var tds = $('#dlInteriors tr td')

         jQuery.each(tds, function () {
             var url = $(this).children('img:first').attr('src');
             var text = $(this).text();
             if (url)
                 $('#hidValuesStatus').val($('#hidValuesStatus').val() + ',' + url);
             if (text)
                 $('#hidValuesMessages').val($('#hidValuesMessages').val() + ',' + text);
         });

     }

 </script>

asp:buttonのイベント「OnClientClick」でjavascript関数を呼び出します

<TABLE id="dlInteriors" Width="300" Runat="server" CellSpacing="0" CellPadding="0">
    <TR>
        <TD id="interiortd" vAlign="top" width="350" runat="server"><img src="icon_active1.gif" /></TD>
        <TD id="TD2" vAlign="top" width="350" runat="server">message1</TD>
    </TR>
    <TR>
         <TD id="TD1" vAlign="top" width="350" runat="server"><img src="icon_deleted1.gif" /></TD>
        <TD id="TD3" vAlign="top" width="350" runat="server">message2</TD>
    </TR>
</TABLE>
<asp:Button runat="server" ID="btnSubmit" OnClientClick="javascript:getTableValues()" Text="SUBMIT" />
<input type="hidden" id="hidValuesMessages" runat="server" />
<input type="hidden" id="hidValuesStatus" runat="server"/>

そして、背後にあるコードで、隠しフィールドからデータを取得します。

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    If IsPostBack Then
        If Not IsNothing(Request.Form("hidValuesMessages")) Then

            Dim str As String = Request("hidValuesMessages")

        End If

        If Not IsNothing(Request.Form("hidValuesStatus")) Then

            Dim str2 As String = Request("hidValuesStatus")
        End If
    End If

End Sub

文字列を分割して、最終的な値を取得します。

お役に立てれば!

よろしく。

于 2012-12-11T10:33:00.407 に答える