2017-03-17 78 views
1

我有這樣的HTML表:C#做HTML表格重複行

<table ID="tbl_ClientSearch" style="width: 83%;" runat="server"> 
    <thead> 
     <tr> 
     <td>Client Account Number</td> 
     <td>Client Name</td> 
     </tr> 
    </thead> 
    <tbody> 
     <tr>     
     <td><asp:Literal ID="CliNox" runat="server"></asp:Literal></td>  
     <td><asp:Literal ID="CliNamex" runat="server"></asp:Literal></td>    
     </tr> 
    </tbody> 
</table> 

然後,我有這個疑問:

SqlCommand command = new SqlCommand(@"EXEC [dbo].[CTLC_SearchClient] '" + SearchVal + "';"); 
SqlConnection conn = new SqlConnection(connString); 
conn.Open(); 
command.Connection = conn; 
SqlDataReader readers = command.ExecuteReader(); 
if (readers.HasRows) 
{ 
    while (readers.Read()) 
    { 
     string CliNo = readers.GetString(0); 
     string CliName = readers.GetString(1); 
     CliNox.Text = string.Format("<a href='ClientInfo.aspx?ClientNumber={0}'>{0}</a>", CliNo.ToString()); 
     CliNamex.Text = CliName.ToString(); 
    } 
    conn.Close(); 
} 

這個工作,但是當我需要返回多行,這隻能返回1因爲我只對錶格聲明瞭1。我該如何解決這個問題?先謝謝你。

+0

你檢查你的SP是否返回多行不? –

+0

@MAdeelKhalid andeel Khalid是的。它工作正常。但我的程序只顯示最後一行,因爲我認爲它覆蓋了html表格行的值。 – theo

+1

即寫你的程序應該只顯示最後一行,你已經編碼的方式,即你只有一個,你覆蓋該行單元格,因爲你的需要,你需要動態地創建表結構或只是使用GridView或中繼器控制。 –

回答

1

在Aspx頁面添加佔位符,除了像下面的表格。

<asp:PlaceHolder ID = "tableClientSearch" runat="server"/> 

在Aspx.cs文件中。

StringBuilder html = new StringBuilder(); 
       html.Append("<table border = '1'><thead><tr><td>Client Account 

Number</td><td>Client Name</td></tr></thead>"); 

     SqlCommand command = new SqlCommand(@"EXEC [dbo].[CTLC_SearchClient] '" + SearchVal + "';"); 
     SqlConnection conn = new SqlConnection(connString); 
     conn.Open(); 
     command.Connection = conn; 
     SqlDataReader readers = command.ExecuteReader(); 

     if (readers.HasRows) 
     { 
      while (readers.Read()) 
      { 
       html.Append("<tr>"); 
       html.Append("<td>"); 
       html.AppendFormat("<a href='ClientInfo.aspx?ClientNumber={0}'>{0}</a>", readers.GetString(0)); 
       html.Append("</td>"); 
       html.Append("<td>"); 
       html.Append(readers.GetString(1)); 
       html.Append("</td>"); 
       html.Append("</tr>"); 
      } 
      conn.Close(); 
     } 

     html.Append("</table>"); 
     tableClientSearch.Controls.Add(new Literal { Text = html.ToString() }); 
+0

這將工作。但是,這不是一個特別好的方法。使用數據綁定控件將是更好的選擇。 –

+0

我同意,也就是說,這不是最好的方式,但是當需求只是渲染表而沒有任何其他功能提供的數據綁定控件時,我更喜歡簡單的html控件,它肯定會獲得一些少量的性能。 –

+0

只是一個更多的青睞。我怎麼能在這裏做桌子的分頁? :)讓我們說每頁10條記錄 – theo

0

我不熟悉asp.net,但是這種情況看起來類似於在php中可能發生的一些情況,在這種情況下,我會嘗試在asp中生成整個表。沿線的東西,

for row in tables 
    append to html <tr><td>data</td><td>moredata</td></tr> 

insert html into <table></table> 
1

在一流水平

protected DataTable dt = new DataTable() 

Delcare在aspx.cs文件保護表填寫從SQL查詢這個數據表(通過DataAdapter的),我想你知道該怎麼做,或者只是去谷歌上查詢。

在ASPX,更換

<tr>     
    <td><asp:Literal ID="CliNox" runat="server"></asp:Literal></td>  
    <td><asp:Literal ID="CliNamex" runat="server"></asp:Literal></td>    
</tr> 

通過

foreach (DataRow dr in dt) 
{ 
    <tr>     
     <td><%= dr["columnName1"] %></td>  
     <td><%= dr["columnName2"] %></td>    
    </tr> 
}