【发布时间】:2013-12-12 23:40:20
【问题描述】:
我成功地从我的数据库中检索到我需要的所有记录,但是我的GridView 中只显示了一条记录。
过去几天我一直在尝试解决这个问题,但我真的很沮丧,因为我没有办法尝试。我迫切需要一些帮助。
我试图操纵查询,因为我最初认为这是问题所在,试图将我从IQueryable检索到的数据转换为List<MyObject>(),试图在@987654326的末尾添加.Cast<object>().ToList(); @,甚至尝试使用ViewStates,等等!
请任何人帮忙。
我确实有onRowDataBound 和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;
}
GridView 定义
<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>
【问题讨论】:
-
您是否尝试过将列表拆分为自己的对象,然后进行数据绑定?这也将允许您检查其上的 COUNT 并确保您确实拥有您期望的记录
-
@JimBeam 是的,我以前做过。我确实得到了记录。我刚刚尝试注释掉
onRowDataBound()并显示所有记录。