在ASP.Net中自定义向导控件的外观,我发现如何使用SideBarTemplate禁用侧边栏按钮并捕获OnItemDataBound事件。一切都很简单。我现在要做的是修改渲染的LinkButton的文本,使步骤名称前缀为“>>”对于当前的步骤。
因此,在SideBarList的ItemDataBound事件处理程序中,我有以下代码:
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 = " & stepCurrent.Wizard.ActiveStep.Name)
Trace.Write("Sidebar", "Link Button = " & 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文本的空字符串,但样式更改有效。
我是否尝试将文字设置在错误的位置?
由于
答案 0 :(得分:3)
我没有找到任何方法来更改“SideBarButton”文本属性,这就是我添加的原因 另一个链接按钮控件在SelectedItemTemplate到DataList并在SideBarButton中设置visible =“fasle”。 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
由于visible =“false”,不会渲染SideBarButton,并且只会使用您需要的参数渲染当前步骤的ActiveSideBarButton。