从使用c#获取文本

时间:2010-10-27 20:29:39

标签: c# asp.net

我需要从HTML表中提取一些文本

我尝试使用

tblGridHeader.Rows[0].InnerText.ToString()

但是我收到了

的错误
  

“HTMLTableRow”不支持   InnerText属性。

我也尝试过InnerHTML,但仍然没有。

我确实尝试使用cells属性,但是我收到错误

  

指定的参数不在   有效值范围。

注意:我刚刚在静态表上尝试过cells属性,但它确实有效。所以我想这与我的桌子动态填充有关吗?

visual studio编辑的代码:

<div id="divGridHeader" runat="Server" style="width:771px; text-align:left; overflow:hidden; float:left">
            <table cellpadding="0" cellspacing="0" border="0" id="tblGridHeader" runat="Server">
                <tr id="trMonth" runat="Server" class="fixedHeader">
                </tr>   
                <tr id="trDaysOfWeek" runat="Server" class="fixedHeader">                    
                </tr>   
                <tr id="trDaysInMonth" runat="Server" class="fixedHeader">                    
                </tr>
                <tr id="trFteLimit" runat="Server" class="fixedHeader" style="color:Black">                    
                </tr>                                             
            </table>
        </div> 

来自浏览器的代码:

<div id="ctl00_cphWorkforceScheduler_divGridHeader" style="overflow: hidden; width: 771px; text-align: left; float: left;">
<table id="ctl00_cphWorkforceScheduler_tblGridHeader" cellspacing="0" cellpadding="0" border="0" width="1085">
<tbody>
<tr id="ctl00_cphWorkforceScheduler_trMonth" class="fixedHeader">
</tr>
<tr id="ctl00_cphWorkforceScheduler_trDaysOfWeek" class="fixedHeader">
</tr>
<tr id="ctl00_cphWorkforceScheduler_trDaysInMonth" class="fixedHeader">
<th id="ctl00_cphWorkforceScheduler_thDay_10012010120000AM" class="tt" onmouseout="HideToolTip(ctl00_cphWorkforceScheduler_spnWorkforceToolTip_ctl00_cphWorkforceScheduler_thDay_10012010120000AM, ctl00_cphWorkforceScheduler_spnWorkforceToolTipMiddle_ctl00_cphWorkforceScheduler_thDay_10012010120000AM);" onmouseover="ShowToolTip(ctl00_cphWorkforceScheduler_spnWorkforceToolTip_ctl00_cphWorkforceScheduler_thDay_10012010120000AM, ctl00_cphWorkforceScheduler_spnWorkforceToolTipMiddle_ctl00_cphWorkforceScheduler_thDay_10012010120000AM, '135px');" style="background-repeat: repeat-x; text-align: center; font-size: 8pt; font-weight: normal; background-image: url(../Images/TitleGradientMiddle.JPG); height: 20px; width: 35px; text-decoration: none;">
</th>
<th id="ctl00_cphWorkforceScheduler_thDay_10022010120000AM" class="tt" onmouseout="HideToolTip(ctl00_cphWorkforceScheduler_spnWorkforceToolTip_ctl00_cphWorkforceScheduler_thDay_10022010120000AM, ctl00_cphWorkforceScheduler_spnWorkforceToolTipMiddle_ctl00_cphWorkforceScheduler_thDay_10022010120000AM);" onmouseover="ShowToolTip(ctl00_cphWorkforceScheduler_spnWorkforceToolTip_ctl00_cphWorkforceScheduler_thDay_10022010120000AM, ctl00_cphWorkforceScheduler_spnWorkforceToolTipMiddle_ctl00_cphWorkforceScheduler_thDay_10022010120000AM, '135px');" style="background-repeat: repeat-x; text-align: center; font-size: 8pt; font-weight: normal; background-image: url(../Images/TitleGradientMiddle.JPG); height: 20px; width: 35px; text-decoration: none;">

Etc等我没有粘贴所有内容,因为有很多标签。请假设HTML格式正确。

6 个答案:

答案 0 :(得分:2)

如果你有TD的runat =“server”,你可以在代码隐藏

中阅读它
 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="MyProject.UI" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
  <table>
    <tr>
      <td id="tdHere" runat="server">This is my content</td>
    </tr>
    <tr>
      <td>
          <asp:Button ID="btnPost" runat="server" Text="Post" onclick="btnPost_Click" />
          <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
      </td>
    </tr>
  </table>
</div>
</form>
</body>  
</html>

和im codebehind

using System;

namespace MyProject.UI
{
  public partial class test : System.Web.UI.Page
  {
     protected void Page_Load(object sender, EventArgs e)
     {
     }

     protected void btnPost_Click(object sender, EventArgs e)
     {
        lblMessage.Text = tdHere.InnerHtml;
     }
  }
}

这是我测试的一个工作示例

答案 1 :(得分:1)

我不是网络人,但快速访问MSDN后发现HTMLTableRow.Cells属性。

答案 2 :(得分:1)

HTMLTableRow控件不能包含文本,它们只能包含其他控件。你准备做什么?您可能应该查看Controls的{​​{1}}或Cells集合,然后检查其子项的文本(或其他子控件)。

答案 3 :(得分:0)

尝试类似

的内容
tblGridHeader.Rows[0].Cells[0].InnerText

假设你想要行第一个单元格中的文本内容。

答案 4 :(得分:0)

尝试

tblGridHeader.Rows[0].Cells[0].InnerText;

答案 5 :(得分:-1)

看起来不支持:

http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltablerow.innertext%28v=VS.71%29.aspx

您是否尝试过读取每个行的单元格?

这样的事可能吗?

string rowData;
foreach(HTMLTableCell c in tblGridHeader.Rows[0].Cells)
{
   rowData += c.InnerHtml; //or c.InnerText
}