在asp.net中使用数据列表?

在asp.net中使用数据列表?,asp.net,Asp.net,大家早上好 我在我的项目中放置了一个数据列表,当我单击链接按钮时,我会在该行中打开一个带有文本框和按钮的面板。它工作正常,但我的问题是,如果我单击行面板的一个链接按钮将打开,当我单击第二行链接按钮时,第二行面板将打开,但第一行面板未关闭。我想你明白我的意思了。我会再解释一遍,这是我的代码检查 <form id="form1" runat="server"> <div> <asp:DataList ID="Mydatalist" runat ="Server"

大家早上好

我在我的项目中放置了一个数据列表,当我单击链接按钮时,我会在该行中打开一个带有文本框和按钮的面板。它工作正常,但我的问题是,如果我单击行面板的一个链接按钮将打开,当我单击第二行链接按钮时,第二行面板将打开,但第一行面板未关闭。我想你明白我的意思了。我会再解释一遍,这是我的代码检查

<form id="form1" runat="server">
<div>
<asp:DataList ID="Mydatalist" runat ="Server"
              OnItemCommand="Mydatalist_ItemCommand" >
  <ItemTemplate >
    <table >
      <tr>
        <td>
          <asp:Label ID="lblcouname" runat ="server"
                     Text ='<%# Eval("country_name") %>'></asp:Label>
        </td>
        <td> 
          <asp:LinkButton ID="lnkrepl" Text="reply"
                          CommandName ="reply" runat ="server"
                          CommandArgument ='<%# Eval("country_id") %>'>
          </asp:LinkButton>
        </td>
      </tr>
    </table>
    <div>
       <asp:Panel ID="mypane" runat ="Server" Visible ="false"  >
         <asp:TextBox ID="txtpane" runat ="Server" ></asp:TextBox><br />
         <asp:Button ID="btnInsert" runat="Server" Text ="Insert" />
       </asp:Panel>
    </div>
  </ItemTemplate>
</asp:DataList>
</div>
</form>

你必须通过编程来隐藏它。DataList应该有一个items属性,因此您可以遍历所有项,使用FIndControl查找面板控件,并将其可见性设置为false

编辑:因此您需要执行以下操作:

private void HideItems()
{
    foreach (var item in this.dl.Items)
    {
       var panel = item.FindControl("mypane") as Panel;
       if (panel != null)
           panel.Visible = false;
     }
}

在ItemCommand中,调用此方法以隐藏所有现有控件的面板。

Brian先生,我编辑了我的问题并放置了代码,请签出OK,ItemCommand将仅为您要设置为true的面板触发;您需要在我上面的帖子中添加以下代码。
private void HideItems()
{
    foreach (var item in this.dl.Items)
    {
       var panel = item.FindControl("mypane") as Panel;
       if (panel != null)
           panel.Visible = false;
     }
}