【发布时间】:2014-05-22 09:02:56
【问题描述】:
这是我的数据网格视图:
<a name="tagCompaniesDatagrid"></a>
<asp:datagrid id="dgCompanies" Width="100%" ...
<Columns>
<asp:TemplateColumn SortExpression="companyName" HeaderText="Company Name">
<HeaderStyle Width="40%" />
<ItemTemplate>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td width="95%">
<asp:LinkButton CssClass="LinkButton" id="btnView" Runat="server" CommandName="ViewDetails" CommandArgument="<%# GetViewUrl((System.Data.Common.DbDataRecord)Container.DataItem) %>">
<span ID="SpanTitle" Runat="server">
<%# DataBinder.Eval(Container.DataItem,"companyName") %>
</span>
</asp:LinkButton>
<asp:Label CssClass="DGNormal" ID="lblStatus" Runat="server" text='<%# StatusToText((int) DataBinder.Eval(Container.DataItem,"statusId")) %>'/>
<asp:Image visible='<%# (bool) DataBinder.Eval(Container.DataItem,"WMCCMRated") %>' ID="imgProfiled" Runat="server" ImageUrl="~/images/WMCCMRated.gif" AlternateText="This company has been competency profiled by WMG" />
<asp:Image Visible='<%# !(Convert.IsDBNull(DataBinder.Eval(Container.DataItem,"feedback")))%>' ID="feedback" Runat="server" ImageUrl="~/images/feedback.gif" AlternateText="The number of feedback this company has been received is ->" ImageAlign="Bottom" Height="18px" Width="12px"/>
<asp:Label CssClass="NormalBold" ID="lblFeedback" Runat="server" text='<%# DataBinder.Eval(Container.DataItem,"feedback") %>' ForeColor="Navy"/>
</td>
</tr>
<tr>
<td>
<span class="DGNormalBold">
<%# DataBinder.Eval(Container.DataItem,"phoneNumber") %>
</span>
</td>
</tr>
<tr>
<td>
<span class="DGNormal" ID="SpanProfile" Runat="server">
<%# cutToNCharacters((string)DataBinder.Eval(Container.DataItem,"Profile")) %>
</span>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<cc1:DropDownCombo ID="dplCompanies" Runat="server" Width="95%" DataTextField="CompanyName" DataValueField="CompanyId" DataSource='<%# GetCompanyNames() %>' />
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="address" HeaderText="Address">
<HeaderStyle Width="15%" />
<ItemTemplate>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td>
<span class="DGNormal" ID="SpanAddress" Runat="server">
<%# DataBinder.Eval(Container.DataItem,"address")%>
</span>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="keyProcessList" HeaderText="Key Processes">
<HeaderStyle Width="15%" />
<ItemTemplate>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td>
<span class="DGNormal" ID="SpanKeyProcesses" Runat="server">
<%# DataBinder.Eval(Container.DataItem,"keyProcessList") %>
</span>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="keySkillList" HeaderText="Key Skills">
<HeaderStyle Width="15%" />
<ItemTemplate>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td>
<span class="DGNormal" ID="SpanKeySkills" Runat="server">
<%# DataBinder.Eval(Container.DataItem,"keySkillList") %>
</span>
</td>
</tr>
</table>
</ItemTemplate>
....
我想获取 companyName,我认为它存储在 span ID="SpanTitle" 中。 所以我尝试了这个:
int j = 0;
foreach (DataGridItem item in dgCompanies.Items)
{
Label name = (Label)item.Cells[j].FindControl("SpanTitle");
using (StreamWriter _testData = new StreamWriter(Server.MapPath("~/DataTableRows.txt"), true))
{
string drstring = Convert.ToString(name.Text);
_testData.WriteLine(drstring); // Write the file.
}
j = j + 1;
}
但我得到了错误
"Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlGenericControl' to type 'System.Web.UI.WebControls.Label'."
如何从我的数据网格中获取 companyName 的文本?
【问题讨论】: