Настройка заголовка LinkButton в ASP.Net Шаблон боковой панели мастера

#asp.net

#asp.net

Вопрос:

Играем с настройкой внешнего вида элемента управления мастера в ASP.Net и я выяснил, как отключить кнопки боковой панели, используя SideBarTemplate и перехватывая событие OnItemDataBound. Все довольно просто. Что я хочу сделать сейчас, так это изменить текст отображаемой кнопки LinkButton, чтобы добавить к названию шага что-то вроде «>>» для текущего шага.

Итак, в моем обработчике событий ItemDataBound для SideBarList у меня есть следующий код:

     Dim stepCurrent As WizardStep = e.Item.DataItem
    Dim linkCurrent As LinkButton = e.Item.FindControl("SideBarButton")
    If Not stepCurrent Is Nothing Then
        Trace.Write("SideBar", "Current Step = " amp; stepCurrent.Wizard.ActiveStep.Name)
        Trace.Write("Sidebar", "Link Button = " amp; linkCurrent.Text)
        linkCurrent.Enabled = False
        If stepCurrent.Wizard.ActiveStepIndex = e.Item.ItemIndex Then
            linkCurrent.Style.Add(HtmlTextWriterStyle.Color, "#000000")
            linkCurrent.Style.Add(HtmlTextWriterStyle.FontWeight, "bold")
            linkCurrent.Text.Insert(0, ">> ")
        End If
    End If
  

Однако я обнаружил, что вывод трассировки показывает пустую строку для текста lunkbutton, но изменения стиля работают.

Я пытаюсь установить текст в неправильном месте?

Спасибо

Ответ №1:

Я не нашел никакого способа изменить текстовое свойство «SideBarButton», поэтому я добавил другой элемент управления кнопкой ссылки в SelectedItemTemplate в DataList и установил visible =»fasle» в SideBarButton. SelectedItemTemplate будет использоваться для отображения элемента на боковой панели для текущего шага мастера.

 
    <ItemTemplate>
        <asp:LinkButton ID="SideBarButton" runat="server"/>
    </ItemTemplate>
    <SelectedItemTemplate>
        <asp:LinkButton ID="ActiveSideBarButton" runat="server">
        <asp:LinkButton Visible="false" ID="SideBarButton"unat="server"/>
    </SelectedItemTemplate>
  

В событии OnItemDataBound сделайте что-то вроде

 
Dim stepCurrent As WizardStep = e.Item.DataItem
If stepCurrent.Wizard.ActiveStepIndex = e.Item.ItemIndex Then
     Dim linkCurrent As LinkButton = e.Item.FindControl("ActiveSideBarButton")
     linkCurrent.Style.Add(HtmlTextWriterStyle.Color, "#000000")
     linkCurrent.Style.Add(HtmlTextWriterStyle.FontWeight, "bold")
     LinkCurrent.Text = stepCurrent.Title;
     linkCurrent.Text.Insert(0, ">> ")
End If
  

SideBarButton не будет отображаться из-за visible=»false», и только ActiveSideBarButton для текущего шага будет отображаться с нужными вам параметрами.