2013-09-27 2 views
0

Мне нужна ваша помощь. Я безуспешно пытаюсь отключить linkbutton в моем управлении Wizard.Disable linkbutton в Wizard Control, созданный программным способом

Я не могу использовать javascript, и я должен использовать userControl.

Я не хочу эту функцию, потому что, если я нахожусь на шаге 4, и я нажимаю ссылку для шага 1, мои данные не сохраняются (каждый wizardStep содержит другой UserControl). Если вы считаете, что можете решить эту проблему, мне не нужно разрешать проблему с вызовом linkbutton.

Я думаю, что моя проблема связана с мастером, потому что я стараюсь это: Disable linkbutton programmatically и до сих пор не работает :(

linkbutton.commandName = нуль, кажется, работает я могу нажать, но это не меняет. . ток wizardStep

Это мой код:

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 в порядке, а остальное - нет.

Заранее спасибо.

ответ

0

шаги мастеров будут переплетены в дл DataList, так что вы можете добавить обработчик дл:

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

Это оставит на боковую панель видно, с ссылками подсвечены соответствующим шаг, не будучи интерактивным. Только кнопки будут доступны для навигации.

+0

спасибо !!! Оно работает. – Karine

Смежные вопросы