c# - 使 gridview 数据源保留在界面中而不是向下转换为对象

标签 c# asp.net gridview datasource

我有一个 C# 网络应用程序,其中有一个带有 List<> 的 gridview,它带有一个接口(interface)。列表中包含三种实现接口(interface)的对象类型。

我将 gridviews 数据源设置为列表并调用数据绑定(bind)。当我运行该应用程序时,出现以下错误:

{"Property accessor 'Name' on object 'Bailey.Objects.Company' threw the following exception:'Object does not match target type.'"}

我改变了列表中的对象顺序,发现第一个对象类型工作得很好,但是当它找到另一个对象的第一个实例时,它会抛出这个错误。

List<IBaileyObject> listToDisplay = listofItems;
GridViewItemList.DataSource = listToDisplay;
GridViewItemList.DataBind();

我想要的是数据源和绑定(bind)保留在界面上,而不是像看起来正在发生的那样向下转换到对象。

这是因为 List<> 返回的是对象本身而不是接口(interface),还是 gridview 中的某些东西在向下转换?

还是我走错路了?

我希望有人有办法解决这个问题。

谢谢

乔恩·霍金斯

编辑

     <asp:TemplateField HeaderText="Selected">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="chkbox" Width="10%" Enabled="true" AutoPostBack="false" />
                    </ItemTemplate>
                </asp:TemplateField>

    <asp:BoundField DataField="ID" HeaderText="ID" Visible="False" />
    <asp:BoundField DataField="Name" HeaderText="Name" />
    <asp:BoundField DataField="TypeName" HeaderText="Type" />
</Columns>
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#E3EAEB" />    

<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#7C6F57" />
<AlternatingRowStyle BackColor="#F8F8F8" />    

该接口(interface)公开了名称、ID 和类型名称。

"HeaderText="ID"Visible="False"/>

无法应用索引器。

最佳答案

我真的很喜欢这个解决方案:http://iridescence.no/post/FixingBoundFieldSupportforCompositeObjects.aspx

它使用自定义的 BoundField 类,该类使用 Eval 返回值。比在 ASPX 页面中使用 Evals 好一点...

关于c# - 使 gridview 数据源保留在界面中而不是向下转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689288/

相关文章:

c# - 使用 Windows 服务创建文件

javascript - 在 C# 中使用 AJAX 绑定(bind) gridview 时报告“未定义”

php - 如何设置要在 yii2 GridView 中显示的项目数量?

c# LINQ 加入以逗号分隔的字符串

c# - 从 Word 中删除不需要的分节符?

asp.net - 在 App_Code 类中强制转换 ascx

javascript - Document.getelementbyId 搜索 div id 时返回 null

ASP.NET 将 HTML 添加到 Gridview header 文本

将鼠标悬停在工具提示单元格上时,JQuery 工具提示会跳转 gridview 中的行 - 如何防止?

c# - 反射 PropertyInfo SetValue C#