2011-08-31 33 views
0

特定行我有一个中继器和dataItembound我有这样的事情编辑在ASP中继

((HtmlTableRow)e.Item.FindControl("prodName")).Visible = false; 

然而,这将在转发所有tablerows是无形的。我想要一个特定的隐藏。有没有办法做到这一点?

继承人的全小鬼

protected void RepeaterCategories_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     //Get category id 
     string catId = Request.QueryString["stctid"]; 
     //Call function to check stock levels in the next loaded category 
     bool stock = checkCategoryStockLevels(catId); 

     if(stock == true) 
     { 
      ((HtmlTableRow)e.Item.FindControl("catName")).Visible = false; 
      ((HtmlTableRow)e.Item.FindControl("catImg")).Visible = false; 
     } 
} 
+0

请出示全面实施您的OnDataItemBound事件...... –

+1

我知道了。 (repeaterID.Items.Count; count ++) for(int repeaterCount = 0; count

回答

0

我明白了。

for (int repeaterCount = 0; count < repeaterID.Items.Count; count++) 
    { 
     Label label = (Label)repeaterID.Items[repeaterCount].FindControl("labelID"); 
     label.Text = "Text"; 
    } 

感谢所有帮助

0

在说明您检索从网页URL的查询字符串中的类标识符。此请求将为所有Repeater项目返回相同的值,因此每个“catName”和“catImg”HtmlTableRow都将被隐藏。

我假设你希望根据绑定到中继器的DataSource中存储的某些值来隐藏行。

为此,您需要访问ItemDataBound事件中的DataItem并执行检查以确定哪个项需要隐藏行。

下面我结合串直放站的名单,所以我可以访问每一个项目,并执行像这样的检查,躲在只有HtmlTableRow在其中的DataItem的值等于“项目1” ItemTemplate中:

string dataItem = (string)e.Item.DataItem; 
if (dataItem == "Item 1") 
{ 
    ((HtmlTableRow)e.Item.FindControl("prodName")).Visible = false; 
} 

我假设你绑定了更复杂的东西,比如DataRow或者其他一些对象。无论哪种方式,过程是相同的,投入DataItem并执行您的检查。

0

我会研究使用ListView或DataList来代替,因为那样您就可以使用数据键来确定基于某个值的行可见性。