2015-09-25 63 views
1

我有一個表,其中每個td都有一個形式爲「A0XJ」的​​ID,其中x和j的值表示行和列號。我想以編程方式更新表數據內的文字,我會從數據表中獲取值(值。將行ID傳遞到循環C#

<table border=1> 
 
    <tr> 
 
    <td id="A011"></td> 
 
    <td id="A012"/><td> 
 
    <td id="A013"></td> 
 
    <td id="A014"></td> 
 
    <td id="A015"></td> 
 
    </tr> 
 
    <tr> 
 
    <td id="A021"></td> 
 
    <td id="A022"></td> 
 
    <td id="A023"></td> 
 
    <td id="A024"></td> 
 
    <td id="A025"></td> 
 
    </tr> 
 
    </table>

在C#代碼,我纔能有自動建立一個循環填充所有數據我遇到的問題是我不確定我應該爲此使用的數據類型我使用字符串(這絕對不是正確的類型) 我收到以下錯誤'字符串不包含InnerText的定義和沒有擴展方法的innertext:

 protected void FILL_DATA(object sender, EventArgs e) 
{ 
    DataTable IACS = new DataTable(); 
     IACS= GenerateTransposedTableinCsharp(generateIacs()); 

     for (int i = 6; i <= 8; i++) 
     { 
      String rowtext ="A0" + i; 
      for (int j = 1; j <= 14; j++) 
      { 
       String text = rowtext + j; 
       text.InnerText= IACS.Rows[i-5].Field<string>(j); 
      } 
     } 

} 
+0

你可能可以請更改指定的輸入和預期的結果。不知何故,它不是很清楚「你有什麼」,你想去哪裏 – derape

+0

你在哪個表單中有HTML? IACS是什麼?如果是這樣,在哪種形式?數據表的每個單元中有什麼?只是ID,整個HTML標記? – derape

回答

1

如果你要正確對待表格元素一樣,可以從你的C#代碼更新的控制,你需要添加runat="server"屬性,並把桌上的ID:

<table border="1" id="tableIACS" runat="server"> 
    <tr> 
     <td id="A011"></td> 
     <td id="A012"></td> 
     <td id="A013"></td> 
     <td id="A014"></td> 
     <td id="A015"></td> 
    </tr> 
    <tr> 
     <td id="A021"></td> 
     <td id="A022"></td> 
     <td id="A023"></td> 
     <td id="A024"></td> 
     <td id="A025"></td> 
    </tr> 
</table> 

然後,可以使用由ID引用其內的細胞FindControl()

protected void FILL_DATA(object sender, EventArgs e) 
{ 
    DataTable IACS = new DataTable(); 
    IACS = GenerateTransposedTableinCsharp(generateIacs()); 

    for (int i = 6; i <= 8; i++) 
    { 
     String rowtext = "A0" + i; 
     for (int j = 1; j <= 14; j++) 
     { 
      String text = rowtext + j; 
      HtmlTableCell cell = tableIACS.FindControl(text) as HtmlTableCell; 
      if (cell != null) 
       cell.InnerText = IACS.Rows[i - 5].Field<string>(j); 

     } 
    } 
} 
+0

正是我在找的東西。 – el94

1

如果我正確理解您的問題,則無法以格式「A0XJ」格式正確格式化text字符串,其中X是行,J是列。

然後你的問題是你沒有正確地建立你的字符串。 text沒有通過內部循環或外部循環中的每次迭代正確更新。

下面是我的解決辦法

protected void FILL_DATA (object sender, EventArgs e) 
{ 
    DataTable IACS = new DataTable(); 
    IACS = GenerateTransposedTableinCsharp (generateIacs()); 
    for (int i = 6; i <= 8; i++) { 

     string rowText = "A0" + i; // this gets updated for each outer iteration 

     for (int j = 1; j <= 14; j++) { 
      string text = rowText + j; // text is now in the form A0XJ 
      // convert string to object id 
     } 
    } 
} 
+0

謝謝你的回答,但問題依然存在。我得到的錯誤是「字符串不包含內部文本的定義」。「文本」被識別爲字符串而不是td id(對象)。 – el94

+0

@ el94這是因爲「InnerText」不是「String」類的屬性(我之前應該看到過這個錯誤)。我修復了代碼。 –

+0

這是我最大的問題,我想將字符串轉換爲對象id,這是一個表數據,td有一個id,InnerText是td的有效屬性。 – el94