-1

我陷入了一种情况,网站在ASP.NET 1.1中运行

我正在加载一个包含一些数据的页面。在页面中有一个 Html 表。 在每一行中,我在一个中加载状态(活动/非活动),在另一个中加载消息。

单击时有一个保存按钮,它应该将状态和消息保存到数据库。

由于数据在Html 表中,因此单击按钮时我会丢失数据。

我尝试了一种将页面加载时的状态和消息保存在全局 Javascript 变量中的选项。但是当单击按钮时,我也会松开它。

存储数据的 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[""] 在回发中获取输入、选择等表单字段。

但是您可以尝试使用隐藏变量(这是您的 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 是否会对您有所帮助。因此,您尝试使用 XML 格式而不是 JSON。不确定 1.1 框架是否存在 JSON 序列化程序 dll

于 2012-12-11T06:44:25.597 回答
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 回答
0

创建表以在这样的服务器上运行

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

并且您将能够使用 HtmlTable 类访问它,如果需要,从表行动态创建一个 DataTable 并将其保存在会话中。看看http://msdn.microsoft.com/en-us/li

于 2012-12-11T06:46:59.027 回答