2012-11-22 38 views
0

我有一個Repeater Control,其中有各種按鈕。啓用中繼器的所有按鈕,除了點擊的按鈕之外

當按鈕被點擊時,它需要禁用自己,所以不能再次點擊。 工作。

但是,當我單擊該按鈕時,它需要啓用任何其他按鈕,但它。

所以,當我點擊它時,它需要禁用。當我點擊另一個時,必須啓用上一個按鈕,並且必須禁用該按鈕。

所以對我試過:

Button btnLoad = (Button)e.Item.FindControl("btnLoad"); 

foreach (Button b in e.Item.Controls.OfType<Button>().Select(c => c).Where(b => b != btnLoad)) 
{ 
    b.Enabled = true; 
} 

btnLoad.Text = "Currently Viewing"; 
btnLoad.Enabled = false; 

但它不是工作。根據我放置的位置,它要麼啓用所有的按鈕(但仍然改變它的文本),要麼根本不做任何事情。

我需要做些什麼來完成這項工作?

編輯:的代碼這裏找到:

protected void rptPdfList_ItemCommand(object source, RepeaterCommandEventArgs e)

這就是爲什麼我用Button btnLoad = (Button)e.Item.FindControl("btnLoad");

的方法發現:

switch (e.CommandName) 
     { 
      case "LoadDoc": 
       //Above code 
       break; 
     } 
+0

該代碼位於何處? –

+0

:/忘了添加它在哪裏...添加 – TheGeekZn

回答

0

假設你想在ButtonClick -event處理程序代碼:

protected void Button_Clicked(Object sender, EventArgs e) 
{ 
    Button thisButton = (Button) sender; 
    thisButton.Text = "Currently Viewing"; 
    RepeaterItem item = (RepeaterItem) thisButton.NamingContainer; 
    IEnumerable<Button> buttons = item.Controls.OfType<Button>(); 
    foreach(var btn in buttons) 
    { 
     btn.Enabled = btn != thisButton; 
    } 
} 
+0

對不起,我缺乏洞察力。我已經更新了我的問題。 – TheGeekZn

+0

以前的按鈕仍然未啓用 - 它們保持禁用狀態。 – TheGeekZn

+0

@NewAmbition:通過上面的代碼或者使用你的'ItemCommand'?您是否在某處回發數據綁定中繼器? –

0

嘗試一個簡單的if語句在一個循環中,如下

Button btnLoad = (Button)e.Item.FindControl("btnLoad"); 
foreach (Control c in e.Item.Controls) 
    { 
     if (b is Button) 
     { 
      if(b == btnLoad) 
      { 
      b.Enabled = false; 
      } 
      else 
      { 
      b.Enabled = true; 
      } 
     } 
    } 
+0

在我的代碼中,我已經將你的循環變成了Linq語句..同樣的東西真的:/ – TheGeekZn