我成功从数据库中检索了我需要的所有记录,但只有一条记录显示在我的GridView
中。
过去几天我一直试图解决这个问题,因为我没有选择尝试,所以我真的很沮丧。我迫切需要一些帮助。
我试图操纵查询,因为我原本认为这是问题,尝试将我从IQueryable
检索的数据转换为List<MyObject>()
,尝试添加.Cast<object>().ToList();
at GridView.DataSource
的结尾,甚至尝试使用ViewState
,还有更多!
请,任何人,帮助。
onRowDataBound
我有[{1}}和selectedIndexChanged
个事件,因为我读到他们可能导致此问题。
以下是我的代码:
GridView :
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;
}
答案 0 :(得分:0)
我自己解决了这个问题。
由于声明了GridView
的{{1}}事件,并且每行的对象由两个不同的RowDataBound
(子类别和类别)组成,因此在
Entities
上述事件。它无法将Anonymous对象(由SubCategory和Category组成)转换为 SubCategory currentSubCat = (SubCategory)e.Row.DataItem;
,从而触发异常。这导致SubCategory
在放置第一个元素后停止执行GridView
,因此只显示第一个元素。
我不得不删除上面的一行,一切都很完美。
答案 1 :(得分:0)
只需将我的答案放在这个问题上即可。我有一个看起来像这样的Gridview列:
<asp:BoundField DataField="DueDate" HeaderText="DueDate" SortExpression="DueDate">
<ItemStyle Wrap="False" />
</asp:BoundField>
我的网格正在被调用存储过程的代码中的字段所占用,在这里也不是太多。 c#的结尾看起来像这样
gv_maingrid2.DataSource = dt
gv_maingrid2.DataBind()
问题是我的存储过程没有为DueDate列返回列标题。当我在SSMS中运行存储过程时,DueDate列值显示为“((无列名)”),因为我将值强制转换为varchar且从未添加别名或列名。检查以查看是否获得了所有列标题。我希望这对某人有帮助!