2013-11-28 67 views
0

我想知道是否有可能通過近似在中繼器中找到控件。我的意思是,我有結束「......編輯模式」一些控件,我想趕上他們,並修改一些屬性如何在帶有IndexOf C的中繼器中找到控件#

像這樣的事情

foreach(RepeaterItem item in repeater1.Items) 
{ 
    HtmlGenericControl divEditMode = item.FindControl("....IndexOf ("EditMode")"); 
    if(divEditMode != null) 
    { 
      divEditMode.Visible = false; 
    } 
} 

回答

2
foreach(RepeaterItem item in repeater1.Items) 
{ 
    foreach (var control in item.Controls) 
    { 
    if(control.ID.EndsWith("EditMode")) 
    { 
      control.Visible = false; 
    } 
    } 
} 

如果我理解你的願望。

1

完成此操作的方法是「手動」控制循環,而不是使用FindControl。您可以使用RepeaterItem的Controls集合列出所有控件並分析它們的ID。
由於控件是按樹組織的,因此您應該遞歸檢查頂層控件的Controls集合。

private IEnumerable<Control> GetEditControls(ControlCollection controls) 
{ 
    var lst = new List<Control>(); 
    if (controls == null) 
     return lst; 
    foreach(var ctrl in controls) 
    { 
     if (ctrl.Id.EndsWith("EditMode")) 
      lst.Add(ctrl); 
     lst.AddRange(GetControls(ctrl.Controls); 
    } 
    return lst; 
} 
// ... 
foreach(RepeaterItem item in repeater1.Items) 
{ 
    var divsEditMode = GetEditControls(item.Controls); 
    foreach(var divEditMode in divsEditMode) 
    { 
      divEditMode.Visible = false; 
    } 
} 
+0

東西不多,但在第二個代碼塊,你要設置'divsEditMode'變量的數據類型的IEnumerable'' Darkzaelus

+0

謝謝你的提示;修復。 – Markus

相關問題