Привязка вложенных списков данных по нажатию кнопки - PullRequest
0 голосов
/ 11 января 2019

У меня проблема с клиентским проектом.

У меня есть 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).

Результатом должен быть список, в котором вы можете щелкнуть строку, в которой отображаются подстроки. И из-за объема данных сублинии (которые идентичны основным линиям в структуре) не должны выбираться из БД, пока кнопка не нажата.

Как это должно работать

Я не в восторге, извините, если этот пост грязный. Не стесняйтесь сказать мне, если мне нужно уточнить.

1 Ответ

0 голосов
/ 11 января 2019

Попробуйте без CommandName на кнопке. Без этого все работает. Но с этим вы получаете ошибку «ListView 'lv1' вызвал событие SelectedIndexChanging, которое не было обработано». Такие имена, как «выбрать». «delete», «update» и т. д. зарезервированы для OnCommands

<asp:Button ID="btn_GetSubProj" Text="+" runat="server" CommandArgument='<%# Eval("Master") %>' />
...