在转发器的最后一行中找到下拉控件

时间:2012-08-07 08:13:05

标签: asp.net c#-4.0

我想隐藏转发器控件最后一行的下拉列表。我使用了以下代码,但无法隐藏下拉列表。

 <asp:Repeater ID="RpFilter" runat="server" OnItemDataBound="rpFilter_DataBound">
<HeaderTemplate>
<table style=" border:1px solid #df5015; width:500px" cellpadding="0">
<tr style="background-color:#df5015; color:White">
<td colspan="2">
<b>Advanced Filter</b>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<table style="background-color:#EBEFF0;border-top:1px dotted #df5015; width:500px" >
<tr>
<td>
<asp:Label ID="lblField" runat="server" Text='<%# Eval("COLUMN_NAME")%>' Font-Bold="true"/>
</td>
<td>
<asp:DropDownList ID="ddlCondition" runat="server">
<asp:ListItem Text="Equals" Value="Equals"></asp:ListItem>
<asp:ListItem Text="Not Equals" Value="Not Equals"></asp:ListItem>
<asp:ListItem Text="Less Than" Value="Less Than"></asp:ListItem>
<asp:ListItem Text="Greater Than" Value="Greater Than"></asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:TextBox ID="txtsearch" runat="server"></asp:TextBox>
</td>
<td>
<asp:DropDownList ID="ddlOperator" runat="server">
<asp:ListItem Text="AND" Value="AND"></asp:ListItem>
<asp:ListItem Text="OR" Value="OR"></asp:ListItem>
</asp:DropDownList>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnClose" runat="server" Text="Close"                
 class="fancybox-close" OnClick="btnCloseMsg_Click" />
<asp:Button ID="btnSearch" runat="server" Text="Search"                
 class="fancybox-close" OnClick="btnSearch_Click" />

</FooterTemplate>
</asp:Repeater>

代码背后:

     protected void rpFilter_DataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || 
        e.Item.ItemType == ListItemType.AlternatingItem)

        {
            if (e.Item.ItemIndex == RpFilter.Items.Count - 1)
            {
                DropDownList Operator = (DropDownList)e.Item.FindControl("ddlOperator");
                Operator.Visible = false;
            }
        }
   }

3 个答案:

答案 0 :(得分:0)

数据绑定后需要执行此操作。在rpFilter_DataBound事件中,当前行始终是最后一行,当时

答案 1 :(得分:0)

我认为没有必要使用条件

 if (e.Item.ItemIndex == RpFilter.Items.Count - 1)

您的代码应为

protected void rpFilter_DataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
    e.Item.ItemType == ListItemType.AlternatingItem)

    {

            DropDownList Operator = (DropDownList)e.Item.FindControl("ddlOperator");
            Operator.Visible = false;

    }

}

答案 2 :(得分:0)

我在prerender事件中使用它来解决它

protected void rpFilter_PreRender(object sender, EventArgs e)
{
    Repeater RpFilter = (Repeater)FindControl("RpFilter");

    foreach (RepeaterItem item in RpFilter.Items)
    {
        if (RpFilter.Items.Count > 0)
        {
            RepeaterItem rptItem = RpFilter.Items[RpFilter.Items.Count - 1];

            DropDownList ddlOperator = (DropDownList)rptItem.FindControl("ddlOperator");
            ddlOperator.Visible = false;
        }
    }  

}

全部谢谢