在asp listview的标签上添加初始的直通文本修饰

时间:2011-07-07 18:23:03

标签: asp.net vb.net listview

我的目标是显示带复选框的任务列表。选中任务的复选框将更新任务的显示,以便显示直通文本修饰。 Everythign工作得很好,除非我无法弄清楚如果完成后如何通过直通显示任务列表,或者如果任务没有完成则正常显示。这是代码摘录:

<asp:Listview .../>
...
<ItemTemplate>
     <asp:HiddenField ID="TaskCompleted" runat="server" Value='<%#Bind("TaskCompleted")%>'/
     <asp:Checkbox ID="CompletedCheckbox" runat="server" AutoPostBack="True" OnCheckedChanged="CompletedCheckboxChange" Checked='<%#IIf(Eval("TaskCompleted"), "True", "False")%>' />
     <asp:Label id="TaskLabel" text='<%#Eval("TaskDesc")%>' runat="server" />
</ItemTemplate>
...
</asp:ListView>

然后是代码(减去数据库中的工作正常):

Protected Sub CompletedCheckboxChange( ByVal sender As Object, ByVal e As EventArgs )

     Dim Completed As CheckBox = TryCast( sender, CheckBox )
     Dim AnnualProgramTasksId as HiddenField = TryCast(Completed.Parent.FindControl("AnnualProgramTasksId"), HiddenField)
     Dim TaskLabel As Label = TryCast(Completed.Parent.FindControl("TaskLabel"), Label)

     If Completed.Checked Then
         'update task displayed, give it a line-through
         TaskLabel.Style("text-decoration") = "line-through"
     Else
         'update task displayed, give it a line-through
         TaskLabel.Style("text-decoration") = "none"
     End If

End Sub

所以这很好用,当我点击一个复选框时,标签会根据复选框获得直通或无。唯一的问题是当我最初加载页面时,我无法弄清楚如何更新TaskLabel的样式以显示直通或不通过。我已经尝试了一些不同的路线,但没有任何东西正在淘汰。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这就是我一直在做的事情,就像你想要的那样。 尝试

<asp:Label id="TaskLabel" text='<%#Eval("TaskDesc")%>' runat="server"
         OnDataBinding="TaskLabel_DataBinding" />

Protected Sub TaskLabel_DataBinding( ByVal sender As Object, ByVal e As EventArgs )
   Dim Completed As CheckBox = TryCast(DirectCast( sender, Control).Parent.FindControl("CompletedCheckbox"), CheckBox) 
   CompletedCheckboxChange(Completed, EventArgs.Empty)
End Sub