更新パネルの一部であるユーザーコントロールがあります。ユーザーコントロールは、heading(タグ)とaspテーブルです。asp:Tableは、ヘッダーのみを使用してascxファイルで定義されます。このテーブルの内容は、csvファイルを読み取ることにより、コードビハインドから動的に更新されます。この設定は、毎分更新される更新パネル内にあります。1分ごとにcsvファイルが更新されるため、テーブルを更新する必要があります。
ここに注意が必要な部分があります。テーブルを更新する前に、古いテーブルのコピーを保存してから、新しいテーブルを更新する必要があります。新しいテーブルが更新され、ページが読み込まれる直前に、page_loadハンドラーからjavascript関数を呼び出して、2つのテーブルを渡す必要があります。javascript関数内で、古いテーブルと新しいテーブルをセルごとに比較し、比較の結果に基づいていくつかの作業を行う必要があります。
更新する前に、テーブルから別のテーブルにデータをコピーする方法は次のとおりです。
TableCell tableCell;
TableRow tableRow;
for (int i = 0; i < Table1.Rows.Count; i++)
{
tableRow = new TableRow();
for (int j = 0; j < Table1.Rows[i].Cells.Count; j++)
{
tableCell = new TableCell();
tableCell.Text = Table1.Rows[i].Cells[j].Text;
tableRow.Cells.Add(tableCell);
}
oldTable.Rows.Add(tableRow);
}
しかし、何らかの理由で、テーブルをjavascript関数に渡し、javascriptのセルにアクセスすると、ヘッダーのみが表示され、古いテーブルの値は表示されません。しかし、コードの背後にあるセルにアクセスすると、値を確認できます。
私のHTMLは
<table id="ContentPlaceHolderBody_ContentPlaceHolderBody_TradxPriceTable_5_oldTable" ClientID="oldTable">
<tr>
<td colspan="3">6M EURIBOR</td>
<td colspan="3">6M EURIBOR</td>
</tr><tr>
<td>Instr</td>
<td>Bid</td>
<td>Ask</td>
<td>Instr</td>
<td>Bid</td>
<td></td>
</tr><tr>
<td></td>
<td></td>
<td></td>
<td colspan="3">BASIS 3s6s</td>
</tr><tr>
<td></td>
<td></td>
<td></td>
<td>Instr</td>
<td>Bid</td>
<td>Ask</td>
</tr><tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
私のJavaScriptは
function foo(table1,table2)
{
var oldTable = document.getElementById(table1);
var newTable = document.getElementById(table2);
alert(oldTable.rows[2].cells[1].innerHTML+" "+newTable.rows[2].cells[1].innerHTML);
}