如何在asp.net中的ListView中获取所选项目

时间:2014-08-06 10:29:05

标签: c# asp.net listview

我使用Listview来显示数据库中的数据,并使用<hr/>标记从每行中分离每个数据。如何选择一个特定的行,以便我可以跟踪正在选择的项目。

修改

这是我的Listview

 <asp:ListView ID="msg_list" runat="server" OnSelectedIndexChanged="selectedMsg" >
   <ItemTemplate>
    <table>
      <tr class="myitem">
       <a href="#"> <td>
             <asp:Label role="menuitem" ID="msg_lbl" runat="server" text='<%#Eval("msg")%>' /><i style=" color:Gray; " >  from   
             <asp:Label ID="tme" runat="server" Text='<%#Eval("name")%>' />
             <i> on </i>
             <asp:Label ID="tmelbl" runat="server" Text='<%#Eval("tme")%>'/>
              <a id="msg-reply" class="btn button" data-toggle="modal" data-target="#msg-rply" style="cursor:pointer;" ><i class="glyphicon glyphicon-share-alt white"> </i></a> 
            </td>
        </a>

              <hr style=" margin-top:1px; margin-bottom:1px; " />
      </tr>
     </table>
     <%--<hr style=" margin-top:1px; margin-bottom:1px; " />--%>
   </ItemTemplate>

   <SelectedItemTemplate>
      <tr class="myitem">
       <a href="#"> <td>
             <asp:Label role="menuitem" ID="msg_lbl" runat="server" text='<%#Eval("msg")%>' /><i style=" color:Gray; " >  from   
             <asp:Label ID="tme" runat="server" Text='<%#Eval("name")%>' />
             <i> on </i>
             <asp:Label ID="tmelbl" runat="server" Text='<%#Eval("tme")%>'/>
              <a id="msg-reply" class="btn button" data-toggle="modal" data-target="#msg-rply" style="cursor:pointer;" ><i class="glyphicon glyphicon-share-alt white"> </i></a> 
            </td>
        </a>

              <hr style=" margin-top:1px; margin-bottom:1px; " />
      </tr>
   </SelectedItemTemplate>
  </asp:ListView>

这就是我试图获取所选项目的方式

  public void selectedMsg(object sender, EventArgs e)
    {


    }

但是当我使用断线器时,它不会让我接受上述功能。

1 个答案:

答案 0 :(得分:2)

首先,我将解决标记/ HTML

的一些问题
       <asp:ListView ID="msg_list" runat="server" OnItemCommand="msg_list_ItemCommand">

            <ItemTemplate>
                <table>
                    <tr class="myitem">
                        <td style="border-bottom: #ccc 1px solid">
                            <asp:Label role="menuitem" ID="msg_lbl" runat="server" Text='<%#Eval("msg")%>' />
                            <i style="color: Gray;">from</i>
                            <asp:Label ID="tme" runat="server" Text='<%#Eval("name")%>' />
                            <i>on </i>
                            <asp:Label ID="tmelbl" runat="server" Text='<%#Eval("tme")%>' />
                            <asp:LinkButton ID="Link1" runat="server" CommandName="sel" CommandArgument='<%#Eval("name")%>'
                                Text="Select" />
                            <a id="msg-reply" class="btn button" data-toggle="modal" data-target="#msg-rply"
                                style="cursor: pointer;"><i class="glyphicon glyphicon-share-alt white"></i>
                            </a>
                        </td>
                    </tr>
                </table>
            </ItemTemplate>

        </asp:ListView>
        <asp:Label ID="TestLabel" runat="server" />
  • 不要在A标签内放置A标签。
  • 不要将Table / tr / td与Hr标签混合使用。
  • 修复了没有结束标记的i标记。
  • 您只能使用一个模板“ItemTemplate”。
  • 可以使用样式/边框作为分隔符。

对于选定的,您可以通过添加按钮/ Linkbutton来使用item命令事件,并使用命令参数,如示例所示。

protected void msg_list_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        TestLabel.Text = "index:" + e.Item.DataItemIndex.ToString() + ", Arg:" + e.CommandArgument;
    }