【问题标题】:Nested listview databinding on button click按钮单击时嵌套的列表视图数据绑定
【发布时间】:2019-06-06 10:11:07
【问题描述】:

我的客户项目有问题。

我有一个由 ObjectDataSource 填充的项目的 ListView (lv1)。当您单击 lv1 行中的按钮时,我需要编写一个嵌套列表 (lv2),按钮事件应该获取数据然后填充 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>

代码隐藏

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)有没有更好的方法呢?只有静态是 objectdatasource 并且子行只能在按钮单击时获取(所以不能在 lv1 绑定上)。

结果应该是一个列表,您可以单击一行然后显示子行。并且由于数据量的原因,在单击按钮之前,不应从数据库中获取子行(在结构上与主行相同)。

How it should work

如果这篇文章乱七八糟,我有点紧张,很抱歉。如果我需要详细说明,请随时告诉我。

【问题讨论】:

  • 我不确定您是否使用了正确的事件 (_ItemCommand)。检查这个answer

标签: c# asp.net listview webforms code-behind


【解决方案1】:

在按钮上不带CommandName 试试看。没有它一切正常。但是有了它,您会收到错误“他 ListView 'lv1' 引发了未处理的事件 SelectedIndexChanging”。名称如“选择”。 'delete'、'update' 等是为 OnCommands 保留的

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多