У меня проблема с клиентским проектом.
У меня есть ListView (lv1) проектов, который заполняется ObjectDataSource. Мне нужно кодировать вложенный список (lv2), когда вы нажимаете на кнопку в строке lv1, событие кнопки должно получить данные, а затем заполнить lv2. проблема в том, что я пытался с вложенным ListView, но lv2 не заполняется по щелчку.
<asp:ListView id="lv1" runat="server" DataSourceID="foo_ods" OnItemCommand="ListV_Proj_ItemCommand">
<LayoutTemplate>
<table>
<thead>
<tr>
<th>Someheader</th>
</tr>
</thead>
<tr id="itemPlaceholder" runat="server" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><asp:Button ID="btn_GetSubProj" Text="+" runat="server" CommandArgument='<%# Eval("Master") %>' CommandName="select" /></td>
<td>data for lv1</td>
</tr>
<tr>
<td>
<asp:ListView id="lv2" runat="server">
<ItemTemplate>some data</ItemTemplate>
</asp:ListView>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
Codebehind
protected void ListV_Proj_ItemCommand(object sender, ListViewCommandEventArgs e)
{
DataTable subProTable = uWeb.Data.Project.List_Test(e.CommandArgument.ToString());
ListView subListV = (ListView)e.Item.FindControl("lv2");
subListV.DataSource = subProTable;
subListV.DataBind();
}
Это базовая структура кода. Я не уверен, что это правильный подход. Короче говоря .:
1) Можно ли это сделать с помощью вложенного ListView? если да как и что я делаю не так?
2) есть ли лучший способ сделать это? объектным источником данных является только статическое И подстроки должны выбираться только при нажатии кнопки (т.е. не при привязке к lv1).
Результатом должен быть список, в котором вы можете щелкнуть строку, в которой отображаются подстроки. И из-за объема данных сублинии (которые идентичны основным линиям в структуре) не должны выбираться из БД, пока кнопка не нажата.
Как это должно работать
Я не в восторге, извините, если этот пост грязный. Не стесняйтесь сказать мне, если мне нужно уточнить.