请帮助我解决这个错误
cs文件
public partial class Control : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OrderDataRepository rep = new OrderDataRepository();
var results = rep.GetAllOrderData().
GroupBy(o => o.DRIVER_ID).
Select(g =>
new
{
DriverId = g.Key,
OrderCount = g.Count(),
OrderCountWhereNameIsNotNull =
g.Count(o => o.RECEIVE_NAME != null)
}).ToList();
DataViewer.DataSource = results;
DataViewer.DataBind();
}
}
aspx文件
<asp:GridView ID="DataViewer" runat="server">
<Columns>
<TemplateColumn>
<ItemTemplate>
<div style='width: <%# Eval("OrderCount") %>' />
</ItemTemplate>
</TemplateColumn>
</Columns>
</asp:GridView>
分析程序错误说明:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并相应地修改源文件。分析器错误消息:System.Web.UI.WebControls.DataControlFieldCollection必须具有类型为“System.Web.UI.WebControls.DataControlField”的项目。 'TemplateColumn'的类型为'System.Web.UI.HtmlControls.HtmlGenericControl
int OrderCount, OrderCountWhereNameIsNotNull;
System.Web.UI.WebControls.TableRow oRow;
System.Web.UI.WebControls.TableCell oCell;
System.Web.UI.HtmlControls.HtmlGenericControl oDiv;
while (true)
//loop through records
//do while not eof
{
oRow = new System.Web.UI.WebControls.TableRow();
oCell = new System.Web.UI.WebControls.TableCell();
oDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
OrderCount = 200; //get value from DB, convert to meaningful width
OrderCountWhereNameIsNotNull = 100; //get value from DB, convert to meaningful width
oDiv.InnerHtml = "<div style='border: 3px solid black; width: " + OrderCount + "px;'>";
oDiv.InnerHtml += Environment.NewLine + " <div style='border: 0px; background-color: red; width: " + OrderCountWhereNameIsNotNull + "px;'> </div>";
oDiv.InnerHtml += Environment.NewLine + "</div>";
oCell.Controls.Add(oDiv);
oRow.Cells.Add(oCell);
tblData.Rows.Add(oRow);
}
答案 0 :(得分:1)
更改此
aspx文件
<asp:GridView ID="DataViewer" runat="server">
<Columns>
<TemplateColumn>
<ItemTemplate>
<div style='width: <%# Eval("OrderCount") %>' />
</ItemTemplate>
</TemplateColumn>
</Columns>
</asp:GridView>
到这个
aspx文件
<asp:GridView ID="DataViewer" runat="server">
<Columns>
<ItemTemplate>
<div style='width: <%# Eval("OrderCount") %>' />
</ItemTemplate>
</Columns>
</asp:GridView>
说明:错误信息实际上告诉你出了什么问题,尽管如果你不知道这意味着什么它会很神秘!这是一个细分:
分析程序错误说明:解析为此请求提供服务所需的资源时发生错误。
这意味着当 ASP.NET 引擎检查源文件时出现问题。提示是“请求”(如在Web请求中)和“在解析资源期间”。
请查看以下特定的解析错误详细信息并正确修改源文件。
错误发生在asp.net解析的文件中,而不是C#编译器。这意味着问题出在aspx
,而不是.cs
文件。
分析器错误消息:System.Web.UI.WebControls.DataControlFieldCollection必须具有类型为“System.Web.UI.WebControls.DataControlField”的项目。 'TemplateColumn'的类型为'System.Web.UI.HtmlControls.HtmlGenericControl
在这里,某些期望包含DataControlField
s的内容,但您已经为它TemplateColumn
提供了HtmlGenericControl
(其中不是DataControlField
,所以不是它想要的东西。所以我们检查一下aspx标记并说,TemplateControl
在哪里?我们发现您的GridView\Columns
集合中有TemplateControl
。鉴于(在检查帮助时),当您需要模板化列时,它应该直接包含ItemTemplate
。我们已经完成了。