实体框架Parser Error

时间:2011-11-07 15:26:11

标签: asp.net

请帮助我解决这个错误

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

enter image description here

  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;'>&nbsp;</div>";
    oDiv.InnerHtml += Environment.NewLine + "</div>";
    oCell.Controls.Add(oDiv);
    oRow.Cells.Add(oCell);
    tblData.Rows.Add(oRow);
}

1 个答案:

答案 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。我们已经完成了。