我有一個列表視圖,我在代碼隱藏中設置數據源 - 這工作正常。 當我向列表視圖的itemtemplate添加另一個listview(或數據綁定控件),並在代碼隱藏中爲該控件設置數據源時,查詢返回的字段似乎對嵌套列表視圖不可用; ASP.NET會引發以下錯誤:DataBinding:'System.String'不包含名爲'j_Name'的屬性。嵌套列表視圖數據綁定 - 屬性未找到?
在下面的例子中,d_Description正常工作,而j_Role拋出上面指出的錯誤。我可以看到查詢返回的數據,並且我知道列名匹配,所以導致錯誤的是什麼(以及我該如何解決它)?
ASPX頁面
<asp:ListView ID="LV1" runat="server">
<LayoutTemplate>
<table runat="server" id="tblSummary">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("d_Description")%>
</td>
</tr>
<tr>
<td>
<asp:ListView ID="LV2" runat="server">
<ItemTemplate>
<%#Eval("j_Role")%>
</ItemTemplate>
<LayoutTemplate>
<asp:placeholder id="itemPlaceholder" runat="server" />
</LayoutTemplate>
</asp:ListView>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
後面的代碼
var qry1 = from q in context.Descriptions select q.d_Description;
LV1.DataSource = qualificationQry;
LV1.DataBind();
var qry2 = from q in context.Roles select q.j_Role;
LV2.DataSource = qualificationQry;
LV2.DataBind();
編輯: 我已經添加下面的列表視圖外的ItemDataBound事件類似的代碼,我仍然遇到同樣的錯誤。大概我誤解了指示?
protected void LV_ItemDataBound(object sender, ListViewItemEventArgs e)
{
using (dbDataContext context = new dbDataContext()
{
var qry2 = from q in context.Roles select q.j_Role;
ListView tempLV = (ListView)e.Item.FindControl("LV2");
tempLV.DataSource = qry2;
tempLV.DataBind();
}
}
編輯:2 各地的網絡閱讀後一些(現在,我有什麼搜索一個想法)所提出的答案似乎是正確的 - 但是,它不工作 - 任何人都可以提出爲什麼?
編輯:3 如果我溝j_Name的輸出,只是有一個硬編碼字符串,沒有錯誤,並且硬編碼字符串。OUPUTS的預期次數。這將表明它只是列名(j_Name)是錯誤的 - 即使我可以看到具有該確切列名的查詢返回的數據集。
編輯:4 修正了它。 這是錯誤的 var qry2 = from q in context.Roles select q.j_Role;
這是正確的 var qry2 = from q in context.Roles select q;
謝謝,但你能稍微更具體嗎? – user9659 2009-04-24 18:20:17