我正在從我的數據庫中成功檢索所需的所有記錄,但只有一條記錄顯示在我的GridView
中。GridView只顯示第一個檢索到的記錄
過去幾天我一直在試圖解決這個問題,而且我因爲沒有足夠的選擇而嘗試失敗。我迫切需要一些幫助。
我試圖操縱查詢,因爲我原本以爲這是問題,試圖從我到IQueryable
檢索List<MyObject>()
的數據進行轉換,試圖在GridView.DataSource
的末尾添加.Cast<object>().ToList();
,甚至試圖利用ViewState
s,還有更多!
請大家幫忙。
我確實有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,並確保你實際上有你期望的記錄 –
[Linq with join query只返回一條記錄]可能的重複(http://stackoverflow.com/questions/20554853/linq-with-join-query-returning-only-one-record) – Markus
@JimBeam是的,我以前做過。我確實得到記錄。我只是試圖將'onRowDataBound()'註釋掉,並顯示所有記錄。 – ClaireG