gpt4 book ai didi

asp.net - ASP 中的 Eval 与 DataField :Datagrid

转载 作者:行者123 更新时间:2023-12-02 10:41:42 25 4
gpt4 key购买 nike

我有一个非常随机的问题困扰着我。它在一天结束时有效,但问题需要一些时间才能弄清楚,并且想知道为什么会发生这种情况,因此如果有人对这个主题有所了解,我将非常感激。问题来了

我的数据网格上有以下两列

<asp:boundcolumn
datafield="contentsection.Id"
headerstyle-cssclass="dgHead"
headertext="Section"
itemstyle-cssclass="dgItem" />

<asp:templatecolumn>
<itemtemplate><%#Eval("contentsection.Id") %></itemtemplate>
</asp:templatecolumn>

第一列给出的错误是:

在所选数据源中找不到名为“contentsection.Id”的字段或属性

但是第二个运行良好。关于为什么会发生这种情况有任何想法或理论吗?

我调用和绑定(bind)数据的方式如下:

页面加载代码背后

ContentList.DataSource = ContentBlockManager.GetList();
ContentList.DataBind();

GetList() 函数已重载并默认传递 0

public static List<ContentBlockMini> GetList(int SectionId)
{
List<ContentBlockMini> myList = null;

SqlParameter[] parameters = { new SqlParameter("@ContentSectionId", SectionId) };

using (DataTableReader DataReader = DataAccess.GetDataTableReader("dbo.contentblock_get", parameters))
{
if (DataReader.HasRows)
{
myList = new List<ContentBlockMini>();
}
while (DataReader.Read())
{
myList.Add(FillMiniDataRecord(DataReader));
}
}

return myList;
}

以及我填写的数据记录。 ContentSection 是另一个对象,它是 ContentBlock 对象的属性

private static ContentBlockMini FillMiniDataRecord(IDataRecord DataRecord)
{
ContentBlockMini contentblock = new ContentBlockMini();

contentblock.Id = DataRecord.GetInt32(DataRecord.GetOrdinal("Id"));
contentblock.Name = DataRecord.GetString(DataRecord.GetOrdinal("Name"));
contentblock.SEOKeywords = DataRecord.IsDBNull(DataRecord.GetOrdinal("SEOKeywords")) ? string.Empty : DataRecord.GetString(DataRecord.GetOrdinal("SEOKeywords"));
contentblock.SEODescription = DataRecord.IsDBNull(DataRecord.GetOrdinal("SEODescription")) ? string.Empty : DataRecord.GetString(DataRecord.GetOrdinal("SEODescription"));
if (DataRecord.GetInt32(DataRecord.GetOrdinal("ContentSectionId")) > 0)
{
ContentSection cs = new ContentSection();
cs.Id = DataRecord.GetInt32(DataRecord.GetOrdinal("ContentSectionId"));
cs.Name = DataRecord.IsDBNull(DataRecord.GetOrdinal("ContentSectionName")) ? string.Empty : DataRecord.GetString(DataRecord.GetOrdinal("ContentSectionName"));
contentblock.contentsection = cs;

}
return contentblock;
}

这就是开始到结束。

最佳答案

数据绑定(bind)只能访问对象的“顶级”属性。例如,如果我的对象是具有简单属性 CompanyId 和 Name 以及 Address 子对象的公司,数据绑定(bind)只能访问 CompanyId 和 Name,而不能访问 Company.Address.City。

如果您使用 @Import page directive 导入命名空间,Eval 可以访问子对象属性。 .

关于asp.net - ASP 中的 Eval 与 DataField :Datagrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2236900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com