У меня есть listview, где я устанавливаю источник данных в код-позади - это прекрасно работает. Когда я добавляю еще один элемент списка (или элемент управления привязкой данных) к элементу itemview шаблона listview и устанавливаю источник данных для этого элемента управления в коде, поля, возвращаемые запросом, кажутся недоступными для вложенного списка; ASP.NET вызывает следующую ошибку: DataBinding: «System.String» не содержит свойства с именем «j_Name».Вложенные данные привязки listview - свойство не найдено?
В приведенном ниже примере 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();
EDIT: Я добавил код, аналогичный тому, что ниже в случае ItemDataBound внешнего ListView, и я по-прежнему сталкивается с та же ошибка. Предположительно, я не понимаю инструктора?
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();
}
}
EDIT: 2 После прочтения вокруг сети еще немного (теперь, когда у меня есть представление о том, что искать) предлагаемый ответ кажется правильным - однако, это не работает - кто может предложить Зачем?
EDIT: 3 Если я канава вывода данных из j_Name, и просто жёстко прописанная строка, нет никакой ошибки, и жёстко строки выводит данные ожидаемого числа раз. Это означало бы, что это просто имя столбца (j_Name) неверно, хотя я вижу, как набор данных возвращается из запроса с таким именем столбца.
EDIT: 4 Исправлено. Это неправильно var qry2 = from q in context.Roles select q.j_Role;
Это правильно var qry2 = from q in context.Roles select q;
Спасибо, но можете ли вы быть более конкретным? – user9659
, отредактированный, если быть более конкретным - есть ссылка на документы msdn для ItemDataBound там тоже, если вам нужно больше информации –
См. Мое редактирование на исходный вопрос. Я сделал то, что вы предложили, и я все еще сталкиваюсь с той же ошибкой (Я вижу, что вызываемое событие и данные, возвращаемые из базы данных, там, я все равно получаю ошибку свойства system.string). – user9659