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

2 回答 2

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;
             }
        }
    }
于 2012-11-22T11:08:39.377 回答
0

假设您希望在Button's Click-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;
    }
}
于 2012-11-22T11:09:01.150 回答