Деактивирайте бутона за връзка в Wizard Control, създаден програмно

Трябва ми помощта ти. Опитвам се безуспешно да деактивирам linkbutton в контролата на Wizard.

Не мога да използвам javascript и трябва да използвам userControl.

Не искам тази функционалност, защото ако съм в стъпка 4 и щракна върху връзката за стъпка 1, моите данни не се запазват (всяка wizardStep съдържа различен UserControl). Ако смятате, че можете да разрешите този проблем, не е необходимо да разрешавам проблема с бутона за връзка.

Мисля, че проблемът ми се дължи на съветника, защото опитвам това: Програмно деактивиране на linkbutton и все още не работи :(

linkbutton.commandName = null изглежда работи. Мога да щракна, но това не променя текущата стъпка на съветника.

Това е моят код:

public class EditOrNew : UserControl
{
    Wizard w = new Wizard();
    WizardStep ws1 = new WizardStep();
    WizardStep ws2 = new WizardStep();
    WizardStep ws3 = new WizardStep();
    WizardStep ws4 = new WizardStep();

    protected override void OnInit(EventArgs e)
    {
        w.ID = "w";                 
        ws1.ID = "ws1";
        ws2.ID = "ws2";
        ws3.ID = "ws3";
        ws4.ID = "ws4";
        ws1.Title = "Select a client";            
        ws1.StepType = WizardStepType.Start;
        ws2.Title = "Select a project";
        ws3.Title = "Select a bot type";
        ws4.Title = "Configure the new task";
        ws4.StepType = WizardStepType.Finish;
    }

    protected override void CreateChildControls()
    {
        this.Controls.Add(w);
        // Allow access to buttonlink in the wizard
        Control ctrl = w.FindControl("SideBarContainer");
        DataList dl = (DataList)ctrl.FindControl("SideBarList");
        foreach (DataListItem item in dl.Items)
        {
            LinkButton b = (LinkButton)item.FindControl("SideBarButton"); 
            b.CommandName = null;  
            // NOT WORK      
            //b.Attributes.Add("disabled", "disabled"); 
            //b.ForeColor = System.Drawing.Color.Pink;                               
            //b.Attributes.CssStyle[HtmlTextWriterStyle.Cursor] = "default";
            //b.Enabled = false;
            //b.OnClientClick = null;
            //b.Attributes.Remove("href");
            //b.Attributes.CssStyle[HtmlTextWriterStyle.Color] = "gray";                
        }
     }

Опитвам се да поставя кода за разрешаване на достъп на друго място.

Не разбирам защо commandName е ОК, докато останалото не е.

Благодаря предварително.


person Karine    schedule 27.09.2013    source източник


Отговори (1)


Стъпките на съветника са обвързани в DataList dl, така че можете да добавите манипулатор към dl:

protected override void OnInit(EventArgs e)
{
    w.ID = "w";                 
    ws1.ID = "ws1";
    ws2.ID = "ws2";
    ws3.ID = "ws3";
    ws4.ID = "ws4";
    ws1.Title = "Select a client";            
    ws1.StepType = WizardStepType.Start;
    ws2.Title = "Select a project";
    ws3.Title = "Select a bot type";
    ws4.Title = "Configure the new task";
    ws4.StepType = WizardStepType.Finish;

    DataList dl= (DataList)w.FindControl("SideBarContainer").FindControl("SideBarList");
    dl.ItemDataBound += w_ItemDataBound;
}

void w_ItemDataBound(object sender, DataListItemEventArgs e)
{
    LinkButton lb = e.Item.FindControl("SideBarButton") as LinkButton;
    if (lb != null)
    {
        lb.Enabled = false;
    }
}

Това ще остави страничната лента видима, с маркирани връзки към съответната стъпка, без да може да се кликва върху тях. Тогава само бутоните ще бъдат достъпни за навигация.

person Naoj    schedule 27.09.2013