我成功地从数据库中检索了我需要的所有记录,但是只有一条记录显示在我的数据库中GridView
.
在过去的几天里我一直在尝试解决这个问题,因为我没有其他选择可以尝试,所以我真的很沮丧。我迫切需要一些帮助。
我尝试操作查询,因为我最初认为这是问题所在,尝试转换我检索的数据IQueryable
to List<MyObject>()
,尝试添加.Cast<object>().ToList();
在结束时GridView.DataSource
,甚至尝试使用ViewState
以及更多!
请任何人帮忙。
我有onRowDataBound
and on selectedIndexChanged
活动为GridView
因为我读到它们可能会导致这个问题。
下面是我的代码:
GridView:
gvSubCategories.DataSource = new BASubCategory().GetSubCatWithCatName();
gvSubCategories.DataBind();
protected void gvSubCategories_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
SubCategory currentSubCat = (SubCategory)e.Row.DataItem;
//Image img = (Image)e.Row.FindControl("imgSubCategory");
//img.ImageUrl = currentSubCat.ImageURL;
}
}
protected void gvSubCategories_SelectedIndexChanged(object sender, EventArgs e)
{
BASubCategory baSubCat = new BASubCategory();
Guid id = new Guid(gvSubCategories.SelectedDataKey.Value.ToString());
SubCategory subCat = baSubCat.GetSubCategory(id);
txtName.Text = subCat.Name;
imgImage.ImageUrl = subCat.ImageURL;
}
网格视图定义
<div class="content">
<asp:GridView ID="gvSubCategories" runat="server" DataKeyNames="ID" AutoGenerateColumns="false"
onrowdatabound="gvSubCategories_RowDataBound"
onselectedindexchanged="gvSubCategories_SelectedIndexChanged">
<Columns>
<asp:CommandField ShowSelectButton="true" />
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="imgSubCategory" runat="server" Width="100px" Height="100px" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CategoryName" HeaderText="Category Name" />
<asp:BoundField DataField="SubCategoryName" HeaderText="Sub Category Name" />
<asp:BoundField DataField="SubCategoryImage" HeaderText="Sub Category Image" />
</Columns>
</asp:GridView>
</div>
我自己解决了这个问题。
自从GridView
's RowDataBound
事件被声明,我的每行对象由两个不同的组成Entities
(子类别和类别),在
SubCategory currentSubCat = (SubCategory)e.Row.DataItem;
所提到的事件。它无法将匿名对象(由子类别和类别组成)转换为SubCategory
,从而引发异常。这导致了GridView
停止执行RowDataBound
放置第一个元素后,因此仅显示第一个元素。
我必须删除上面的行,一切都运行良好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)