目前使用c#编写asp.net程序
其中客户端一些表格是通过 runat server的 htmltable生成的但是,生成数据的时候,
发现了一些很奇怪的问题,参看下面代码:请留意代码里面for debug部分
为了测试,我把单元格里面的innerhtml写在一个临时的stmp字符串里面,
当执行完htmltable 添加 htmltable row的方法之后,
重新把这些 innerhtml 组成的stmp字符串打印出来以后,
字符串的内容居然变了。(但是去掉“tblRegionalConsumptionHistoryInfo.Rows.Add(row);”这一句,一切正常。一下子说不清楚,看代码就知道了。//------------变量定义-------
HtmlTableRow row;
HtmlTableCell cell_RegionName;
HtmlTableCell cell_Year;
HtmlTableCell cell_ConsumedQuantity_YearFrom;
HtmlTableCell cell_ConsumedQuantity_YearTo;
HtmlTableCell cell_ConsumedQuantityShare_YearFrom;
HtmlTableCell cell_ConsumedQuantityShare_YearTo;
HtmlTableCell cell_ConsumedValue_YearFrom;
HtmlTableCell cell_ConsumedValue_YearTo;
HtmlTableCell cell_ConsumedValueShare_YearFrom;
HtmlTableCell cell_ConsumedValueShare_YearTo;
string sTmp;//--------------各单元格赋值------
for (i=0;i<query_result.count;i++) //在记录集里面循环
{ cell_RegionName=new HtmlTableCell();
cell_RegionName.InnerHtml=.....
.....以下略...... ///添加行
row = new HtmlTableRow();
row.Cells.Add(cell_RegionName);
row.Cells.Add(cell_ConsumedQuantity_YearFrom);
row.Cells.Add(cell_ConsumedQuantity_YearTo);
row.Cells.Add(cell_ConsumedQuantityShare_YearFrom);
row.Cells.Add(cell_ConsumedQuantityShare_YearTo);
row.Cells.Add(cell_ConsumedValue_YearFrom);
row.Cells.Add(cell_ConsumedValue_YearTo);
row.Cells.Add(cell_ConsumedValueShare_YearFrom);
row.Cells.Add(cell_ConsumedValueShare_YearTo);//-------for debug-----
sTmp = string.Format("FillConsumptionTransferHistory:before AddRow,{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}"
, cell_RegionName.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedValue_YearFrom.InnerHtml
, cell_ConsumedValue_YearTo.InnerHtml
, cell_ConsumedValueShare_YearFrom.InnerHtml
, cell_ConsumedValueShare_YearTo.InnerHtml);
MyEventLog.Log.Debug(sTmp);
//-------------------
tblRegionalConsumptionHistoryInfo.Rows.Add(row); ///该htmltable 添加该行。执行完这句以后,变量row里面的相关信息居然改变了,结果相关cell的信息也出错了,如果把这句话去掉,一切正常。
//-------------debug---\/
sTmp = string.Format("FillConsumptionTransferHistory:after AddRow,{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}"
, cell_RegionName.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedValue_YearFrom.InnerHtml
, cell_ConsumedValue_YearTo.InnerHtml
, cell_ConsumedValueShare_YearFrom.InnerHtml
, cell_ConsumedValueShare_YearTo.InnerHtml);
MyEventLog.Log.Debug(sTmp);
//---------------------/\-----
}
其中客户端一些表格是通过 runat server的 htmltable生成的但是,生成数据的时候,
发现了一些很奇怪的问题,参看下面代码:请留意代码里面for debug部分
为了测试,我把单元格里面的innerhtml写在一个临时的stmp字符串里面,
当执行完htmltable 添加 htmltable row的方法之后,
重新把这些 innerhtml 组成的stmp字符串打印出来以后,
字符串的内容居然变了。(但是去掉“tblRegionalConsumptionHistoryInfo.Rows.Add(row);”这一句,一切正常。一下子说不清楚,看代码就知道了。//------------变量定义-------
HtmlTableRow row;
HtmlTableCell cell_RegionName;
HtmlTableCell cell_Year;
HtmlTableCell cell_ConsumedQuantity_YearFrom;
HtmlTableCell cell_ConsumedQuantity_YearTo;
HtmlTableCell cell_ConsumedQuantityShare_YearFrom;
HtmlTableCell cell_ConsumedQuantityShare_YearTo;
HtmlTableCell cell_ConsumedValue_YearFrom;
HtmlTableCell cell_ConsumedValue_YearTo;
HtmlTableCell cell_ConsumedValueShare_YearFrom;
HtmlTableCell cell_ConsumedValueShare_YearTo;
string sTmp;//--------------各单元格赋值------
for (i=0;i<query_result.count;i++) //在记录集里面循环
{ cell_RegionName=new HtmlTableCell();
cell_RegionName.InnerHtml=.....
.....以下略...... ///添加行
row = new HtmlTableRow();
row.Cells.Add(cell_RegionName);
row.Cells.Add(cell_ConsumedQuantity_YearFrom);
row.Cells.Add(cell_ConsumedQuantity_YearTo);
row.Cells.Add(cell_ConsumedQuantityShare_YearFrom);
row.Cells.Add(cell_ConsumedQuantityShare_YearTo);
row.Cells.Add(cell_ConsumedValue_YearFrom);
row.Cells.Add(cell_ConsumedValue_YearTo);
row.Cells.Add(cell_ConsumedValueShare_YearFrom);
row.Cells.Add(cell_ConsumedValueShare_YearTo);//-------for debug-----
sTmp = string.Format("FillConsumptionTransferHistory:before AddRow,{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}"
, cell_RegionName.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedValue_YearFrom.InnerHtml
, cell_ConsumedValue_YearTo.InnerHtml
, cell_ConsumedValueShare_YearFrom.InnerHtml
, cell_ConsumedValueShare_YearTo.InnerHtml);
MyEventLog.Log.Debug(sTmp);
//-------------------
tblRegionalConsumptionHistoryInfo.Rows.Add(row); ///该htmltable 添加该行。执行完这句以后,变量row里面的相关信息居然改变了,结果相关cell的信息也出错了,如果把这句话去掉,一切正常。
//-------------debug---\/
sTmp = string.Format("FillConsumptionTransferHistory:after AddRow,{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}"
, cell_RegionName.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedQuantity_YearFrom.InnerHtml
, cell_ConsumedQuantity_YearTo.InnerHtml
, cell_ConsumedValue_YearFrom.InnerHtml
, cell_ConsumedValue_YearTo.InnerHtml
, cell_ConsumedValueShare_YearFrom.InnerHtml
, cell_ConsumedValueShare_YearTo.InnerHtml);
MyEventLog.Log.Debug(sTmp);
//---------------------/\-----
}
既然正常了 就不要管了 呵呵呵