C# 如何使用c在asp.net中查找表单元格#

C# 如何使用c在asp.net中查找表单元格#,c#,asp.net,listview,itemtemplate,C#,Asp.net,Listview,Itemtemplate,我想使用td visibility属性在listview中隐藏itemtemplate的数据。单击按钮后,它应该再次显示itemtemplate中的数据。但是,我在后面的代码中找不到使用c#的td控件。有没有办法找到此控件或其他方法来处理此问题 <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent"> <asp:Button ID="Button1" runat="se

我想使用td visibility属性在listview中隐藏itemtemplate的数据。单击按钮后,它应该再次显示itemtemplate中的数据。但是,我在后面的代码中找不到使用c#的td控件。有没有办法找到此控件或其他方法来处理此问题

 <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
  <asp:Button ID="Button1" runat="server" Text="Search" OnClick="ButtonClick" />
 <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">

     <asp:View ID="View1" runat="server">
        <asp:ListView ID="SectionListView" runat="server" InsertItemPosition="FirstItem" OnPagePropertiesChanged="SectionListView_PagePropertiesChanged">

             <ItemTemplate>
                 <tr style="">
                        <td></td>
                        <td id="row1" style="visibility:hidden;" runat="server">
                                <asp:Label ID="SectionItemLabel" runat="server" Text='<%# Eval("SectionItem") %>' />
                        </td>
                 </tr>
             </ItemTemplate>

你有几个问题。首先,当您试图在“MainContent”中查找“row1”时,if将无法找到它,因为“row1”实际上是“MainContent”的其他子级的子级。它不会递归地找到它们,除非

其次,由于ListView中的每个
ListViewItem
都包含“row1”,因此它们都有自己的唯一ID,例如
SectionListView\u ctrl0\u row1
SectionListView\u ctrl1\u row1
,等等。因此,您需要对每个
ListViewItem
使用FindControl()

但是,由于您需要在每个
ListViewItem
上执行此操作,并且因为每个
ListViewItem
都包含“row1”,因此每一行将获得相同的属性(即所有可见或所有不可见)。以下是如何做到这一点:

protected void ButtonClick(object sender, EventArgs e)
{
    foreach (ListViewItem lvi in SectionListView.Items)
    {
        if (lvi.ItemType == ListViewItemType.DataItem)
        {
            HtmlTableCell row1 = (HtmlTableCell)lvi.FindControl("row1");
            row1.Style.Add("visibility", "hidden");
        }
    }
}

如果需要单独设置每个单元格的样式,则每个单元格的命名都需要不同。在这种情况下,通常会在ID的末尾附加某种数字或数据库ID

您正在单击的触发
按钮单击()的按钮在哪里?“MainControl”在哪里/是什么?@j.f.按钮点击在多视图外部,“MainControl”是内容占位符。更新的代码我需要保留这条线路吗?您肯定需要
id=“row1”
runat=“server”
。保持这种风格取决于你自己,也取决于你是否需要隐藏它来开始。谢谢一切都成功了!我只会隐藏页面加载上的所有内容。如果我在多视图中使用另一个视图,它找不到id。你知道吗?
protected void ButtonClick(object sender, EventArgs e)
{
    foreach (ListViewItem lvi in SectionListView.Items)
    {
        if (lvi.ItemType == ListViewItemType.DataItem)
        {
            HtmlTableCell row1 = (HtmlTableCell)lvi.FindControl("row1");
            row1.Style.Add("visibility", "hidden");
        }
    }
}