2012-08-07 58 views
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; 
      } 
     } 
    } 

回答

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; 
     } 
    } 

}

感謝所有

0

你需要做的是在數據綁定之後。在rpFilter_DataBound情況下,當前行始終是最後一排,在那個時刻

+0

u能請告訴我怎麼樣? – asifa 2012-08-07 08:43:55

+0

調用DataBind之後,選擇Repeater的Items集合中的最後一項(不包括頁腳),並使用您已擁有的相同的FindControl/Set可見方法。 – podiluska 2012-08-07 08:49:23

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; 

    } 

}

+0

它隱藏了所有的下拉菜單 – asifa 2012-08-07 08:43:25

相關問題