【发布时间】:2017-12-27 04:55:15
【问题描述】:
错误:
DataBinding:“ClassLibrary.SubCategoryModel”不包含名为“objCat”的属性
SubCategories.aspx 的网格视图控件
<asp:GridView runat="server" ID="gridSubCategories" Height="156px" Width="240px" AutoGenerateColumns="false" AllowPaging="true" PageSize="5" OnPageIndexChanging="gridSubCategories_PageIndexChanging">
<Columns>
<asp:BoundField DataField="SubCategoryID" HeaderText="Sub Category ID" InsertVisible="false" ReadOnly="true" SortExpression="SubCategoryID" />
<asp:BoundField DataField="SubCategoryName" HeaderText="Sub Category" SortExpression="CategoryName" />
<asp:BoundField DataField="objCat.CategoryName" HeaderText="Category" InsertVisible="false" ReadOnly="true" SortExpression="objCat.CategoryName" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnEdit" runat="server" CommandName="EnableEdit" CommandArgument="<%#((GridViewRow)Container).RowIndex%>" Text="Edit" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" CommandName="DeleteCategory" CommandArgument="<%#((GridViewRow)Container).RowIndex%>" Text="Delete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码抛出错误:
if (!IsPostBack)
{
gridSubCategories.DataSource = sda.GetSubCategories();
gridSubCategories.DataBind();
}
类定义:
public class CategoryModel
{
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
public class SubCategoryModel
{
public CategoryModel objCat = new CategoryModel();
public int SubCategoryID { get; set; }
public string SubCategoryName { get; set; }
}
GetSubCategories 方法:
public List<SubCategoryModel> GetSubCategories()
{
List<SubCategoryModel> listSubCatList = new List<SubCategoryModel>();
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("GetSubCategories"))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
SubCategoryModel subcatObj = new SubCategoryModel();
subcatObj.SubCategoryID = Convert.ToInt32(sdr["SubCategoryID"]);
//subcatObj.objCat.CategoryID = Convert.ToInt32(sdr["CategoryID"]);
subcatObj.objCat.CategoryName = sdr["CategoryName"].ToString();
subcatObj.SubCategoryName = sdr["SubCategoryName"].ToString();
listSubCatList.Add(subcatObj);
}
con.Close();
return listSubCatList;
}
}
}
我可以看到正在获取数据并传递给gridview的DataSource: Contents of DataSource property of the gridview
为什么 objCat 没有被识别为 CategoryModel 类中的属性?还有其他方法可以将对象绑定到对象内吗?
【问题讨论】:
标签: c# asp.net gridview data-binding