2016-11-20 69 views
0

我已经使用从数据表获取数据的字符串构建器从类创建表。现在我在一个名为'Stadium Name'的字段中添加了一个HTML按钮,但它没有显示出来。C#HTML表按钮不可见

这里是我的代码:

StringBuilder html = new StringBuilder(); 

      html.Append("<table border = '1'>"); 

      html.Append("<tr>"); 

      foreach (DataColumn column in dt.Columns) 
      { 
       html.Append("<th>"); 
       html.Append(column.ColumnName); 
       html.Append("</th>"); 
      } 
      html.Append("</tr>"); 

      foreach (DataRow row in dt.Rows) 
      { 
       html.Append("<tr>"); 
       foreach (DataColumn column in dt.Columns) 
       { 
        html.Append("<td>"); 
        if (column.ColumnName != "Stadium Name") 
        { 
         html.Append(row[column.ColumnName]); 
        } 
        // PROBLEM STARTS HERE 
        if (column.ColumnName == "Stadium Name") 
        { 
         HtmlButton b = new HtmlButton();      
         b.ID = "btnSname"; 
         b.InnerText = row[column.ColumnName].ToString(); 
         b.ServerClick += new EventHandler(btnSname_Click); 

        }  
        // PROBLEM ENDS HERE    

        html.Append("</td>");      

       } 
       html.Append("</tr>"); 
      } 

      html.Append("</table>"); 

      return html; 

现在下的列体育场名称的数据是空的。

+0

如果您将此服务作为asp.net页面的一部分,那么您可能通过创建文字html来过度复杂化事情 - 您是否考虑过使用DataList或Repeater控件? – Filburt

回答

2

您不会在任何地方追加bhtml。此外,这种方法将不起作用,因为即使您成功将b序列化为html代码并将其附加到html,您也将失去事件接收器。

你可以做的是在你的页面上添加一个Table控件(你正在做Web窗体?)并从后端动态地添加控件,类似于你现在正在做的事情。

https://msdn.microsoft.com/en-us/library/ty0ce8sc.aspx#CodeExamples

甚至更​​好更简单 - 你可以直接绑定您的数据到一个GridView?

+0

有没有其他的方法来实现同样的事情,但使用事件处理程序在体育场名称下的数据按钮? –

+0

是的,请参阅更新 –

+0

我可以将它绑定到gridview,如果我想,但我觉得很容易,所以我想以不同的方式做 –