【发布时间】:2013-11-27 15:53:26
【问题描述】:
我有一个默认情况下看起来像这样的表:
<table width="650" id="myTable" runat="server">
<tbody>
<tr>
<td class="cellWidth300 bottomBorder topBorder">Column1</td>
<td class="cellWidth125 leftBorder topBorder bottomBorder textCenter">Column2</td>
<td class="cellWidth100 leftBorder topBorder bottomBorder textCenter">Column3</td>
<td class="cellWidth125 leftBorder rightBorder topBorder bottomBorder textRight">Column4</td>
</tr>
<tr>
<td class="cellWidth300"><input type="text" size="29" runat="server"/></td>
<td class="cellWidth125 leftBorder textCenter"><input type="text" size="9" class="units commas" runat="server"/></td>
<td class="cellWidth100 leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server"/></td>
<td class="cellWidth125 leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server"/> </td>
</tr>
<tr>
<td class="cellWidth300"><input id="Text2" type="text" size="29" runat="server"/></td>
<td class="cellWidth125 leftBorder textCenter"><inputtype="text" size="9" class="units commas" runat="server"/></td>
<td class="cellWidth100 leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server"/></td>
<td class="cellWidth125 leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server"/> </td>
</tr>
<tr>
<td class="cellWidth300"><input type="text" size="29" runat="server"/></td>
<td class="cellWidth125 leftBorder textCenter"><input type="text" size="9" class="units commas" runat="server"/></td>
<td class="cellWidth100 leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server"/></td>
<td class="cellWidth125 leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server" /> </td>
</tr>
</tbody>
</table>
我有一大块 jquery,每次你在最后一行输入内容时都会生成一个新行。它看起来像这样:
var _addRow ='<tr>' +
'<td width="300"><input type="text" size="29" runat="server" ></td>' +
'<td width="125" class="leftBorder textCenter"><input type="text" size="9" class="units commas" runat="server" /></td>' +
'<td width="100" class="leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server" /></td>' +
'<td width="125" class="leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server" /> </td>' +
'</tr>';
function initialize() {
$(document).on('keypress', '#myTable tr:last input', AddRowToMyTable);
}
function AddRowToMyTable() {
$('#myTable tr:last').after(_addRow);
}
这一切都非常棒。
现在,我做了几件需要回发的事情。其中一个是我以 XML 格式保存表中的数据,另一个是我可以从表中的数据创建 PDF。但是,每次我回发时,它都会在数据到达那里之前丢失所有动态生成的数据。也就是说,如果我用所有数据编写一个 XML 文件,那么第三行(非动态生成的最后一行)之后的任何内容都不会出现。
奇怪的是,有一段时间我让这一切都在工作。当时,我以为我保存了数据并立即重新加载以恢复我的表,但这不再起作用,我不知道为什么。
我的第一个主要问题是:如果我回发到服务器,不应该发送动态行中的所有数据吗?也就是说,如果我有第6行的数据,即使回发完成后会丢失,不应该在被清除之前发送到服务器吗?我的保存算法是这样的:
private void WriteMyTableToXML()
{
HtmlInputText tContent;
HtmlTableRow tRow;
int i = 1; //First row is headers, which we don't want.
_Writer.WriteStartElement("MyTable");
while (i < tblCropsAndFeed.Rows.Count - 1) // last row should always be blank. We can skip it
{
tRow = tblCropsAndFeed.Rows[i];
_Writer.WriteStartElement("Entry");
string tInputBox0 = tRow.Cells[0].Controls[0].ClientID;
tContent = (HtmlInputText)tRow.FindControl(tInputBox0);
_Writer.WriteStartElement("name");
_Writer.WriteString(tContent.Value);
_Writer.WriteEndElement();
string tInputBox1 = tRow.Cells[1].Controls[0].ClientID;
tContent = (HtmlInputText)tRow.FindControl(tInputBox1);
_Writer.WriteStartElement("units");
_Writer.WriteString(tContent.Value);
_Writer.WriteEndElement();
string tInputBox2 = tRow.Cells[2].Controls[0].ClientID;
tContent = (HtmlInputText)tRow.FindControl(tInputBox2);
_Writer.WriteStartElement("value");
_Writer.WriteString(tContent.Value);
_Writer.WriteEndElement();
_Writer.WriteEndElement();
i++;
}
_Writer.WriteEndElement();
}
其次,有没有办法实际上只是保留页面的状态。不存在这样的东西吗?
If(IsPostBack)
{
DontResetThePage();
}
【问题讨论】:
-
您是加载任何初始数据还是只是没有绑定的纯 html 和 .NET 控件?
-
它只是普通的html和.NET控件,没有绑定
-
你每次都写入同一个xml文件吗?就像您不断覆盖或附加数据一样?
-
该程序允许您为其命名,因此用户可以选择创建一个新的或覆盖现有的。
-
你以前用过gridview控件吗?在代码隐藏中绑定?
标签: c# javascript jquery .net postback