|
| 1 | +# BulletedList — Feature Comparison Audit |
| 2 | + |
| 3 | +**ASP.NET Docs:** https://learn.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.bulletedlist?view=netframework-4.8 |
| 4 | +**Blazor Component:** `BlazorWebFormsComponents.BulletedList<TItem>` |
| 5 | +**Implementation Status:** ✅ Implemented |
| 6 | + |
| 7 | +## Properties |
| 8 | + |
| 9 | +### Control-Specific Properties |
| 10 | + |
| 11 | +| Property | Web Forms Type | Blazor Status | Notes | |
| 12 | +|----------|---------------|---------------|-------| |
| 13 | +| BulletStyle | BulletStyle | ✅ Match | Enum with all values (Disc, Circle, Square, Numbered, etc.) | |
| 14 | +| BulletImageUrl | string | ✅ Match | Custom image for bullets | |
| 15 | +| DisplayMode | BulletedListDisplayMode | ✅ Match | Text, HyperLink, LinkButton | |
| 16 | +| FirstBulletNumber | int | ✅ Match | Starting number for ordered lists | |
| 17 | +| Target | string | ✅ Match | Target for hyperlinks | |
| 18 | + |
| 19 | +### ListControl Inherited Properties |
| 20 | + |
| 21 | +| Property | Web Forms Type | Blazor Status | Notes | |
| 22 | +|----------|---------------|---------------|-------| |
| 23 | +| Items | ListItemCollection | ✅ Match | Via `StaticItems` parameter | |
| 24 | +| DataTextField | string | ✅ Match | Maps data to text | |
| 25 | +| DataValueField | string | ✅ Match | Maps data to value | |
| 26 | +| DataTextFormatString | string | 🔴 Missing | No format string support | |
| 27 | +| DataSource | object | ✅ Match | Via DataBoundComponent | |
| 28 | +| DataMember | string | ✅ Match | Via DataBoundComponent | |
| 29 | +| DataSourceID | string | 🔴 Missing | No server-side DataSource controls | |
| 30 | +| AppendDataBoundItems | bool | 🔴 Missing | Always appends static + data items | |
| 31 | +| SelectedIndex | int | 🔴 Missing | Not applicable for bulleted list (read-only in WF too) | |
| 32 | +| SelectedItem | ListItem | 🔴 Missing | Not applicable for bulleted list | |
| 33 | +| SelectedValue | string | 🔴 Missing | Not applicable for bulleted list | |
| 34 | +| AutoPostBack | bool | 🔴 Missing | Not applicable (bulleted list has no selection) | |
| 35 | +| CausesValidation | bool | 🔴 Missing | Not implemented | |
| 36 | +| ValidationGroup | string | 🔴 Missing | Not implemented | |
| 37 | + |
| 38 | +### WebControl Inherited Properties |
| 39 | + |
| 40 | +| Property | Web Forms Type | Blazor Status | Notes | |
| 41 | +|----------|---------------|---------------|-------| |
| 42 | +| AccessKey | string | 🔴 Missing | Not in base class or IStyle | |
| 43 | +| BackColor | Color | ✅ Match | Via IStyle implementation | |
| 44 | +| BorderColor | Color | ✅ Match | Via IStyle implementation | |
| 45 | +| BorderStyle | BorderStyle | ✅ Match | Via IStyle implementation | |
| 46 | +| BorderWidth | Unit | ✅ Match | Via IStyle implementation | |
| 47 | +| CssClass | string | ✅ Match | Via IStyle implementation | |
| 48 | +| Enabled | bool | ✅ Match | From BaseWebFormsComponent; propagates to items | |
| 49 | +| Font | FontInfo | ✅ Match | Via IStyle implementation | |
| 50 | +| ForeColor | Color | ✅ Match | Via IStyle implementation | |
| 51 | +| Height | Unit | ✅ Match | Via IStyle implementation | |
| 52 | +| Width | Unit | ✅ Match | Via IStyle implementation | |
| 53 | +| TabIndex | short | ✅ Match | From BaseWebFormsComponent | |
| 54 | +| ToolTip | string | 🔴 Missing | Not implemented on this component | |
| 55 | +| Style | CssStyleCollection | ✅ Match | Computed from IStyle properties | |
| 56 | + |
| 57 | +### Control Inherited Properties |
| 58 | + |
| 59 | +| Property | Web Forms Type | Blazor Status | Notes | |
| 60 | +|----------|---------------|---------------|-------| |
| 61 | +| ID | string | ✅ Match | From BaseWebFormsComponent; rendered on list element | |
| 62 | +| ClientID | string | ✅ Match | Rendered as `id` on `<ul>`/`<ol>` | |
| 63 | +| Visible | bool | ✅ Match | From BaseWebFormsComponent | |
| 64 | +| EnableViewState | bool | N/A | Server-only | |
| 65 | +| ViewState | StateBag | N/A | Server-only | |
| 66 | +| EnableTheming | bool | N/A | Server-only | |
| 67 | +| SkinID | string | N/A | Server-only | |
| 68 | +| Page | Page | N/A | Server-only | |
| 69 | +| NamingContainer | Control | N/A | Server-only | |
| 70 | +| UniqueID | string | N/A | Server-only | |
| 71 | +| ClientIDMode | ClientIDMode | N/A | Server-only | |
| 72 | + |
| 73 | +## Events |
| 74 | + |
| 75 | +| Event | Web Forms Signature | Blazor Status | Notes | |
| 76 | +|-------|-------------------|---------------|-------| |
| 77 | +| Click | BulletedListEventHandler | ✅ Match | `EventCallback<BulletedListEventArgs> OnClick` (LinkButton mode) | |
| 78 | +| DataBinding | EventHandler | ✅ Match | Via base class | |
| 79 | +| Init | EventHandler | ✅ Match | Via base class | |
| 80 | +| Load | EventHandler | ✅ Match | Via base class | |
| 81 | +| PreRender | EventHandler | ✅ Match | Via base class | |
| 82 | +| Unload | EventHandler | ✅ Match | Via base class | |
| 83 | + |
| 84 | +## Methods |
| 85 | + |
| 86 | +| Method | Web Forms Signature | Blazor Status | Notes | |
| 87 | +|--------|-------------------|---------------|-------| |
| 88 | +| DataBind() | void | N/A | Server-only | |
| 89 | +| Focus() | void | N/A | Server-only | |
| 90 | + |
| 91 | +## HTML Output Comparison |
| 92 | + |
| 93 | +Web Forms renders `<ul>` for unordered styles and `<ol>` for ordered styles (Numbered, LowerAlpha, UpperAlpha, LowerRoman, UpperRoman). Each item is a `<li>` containing either plain text in a `<span>`, an `<a>` hyperlink, or a clickable `<a>` link button. The Blazor component matches this structure. The `type` attribute is rendered on `<ol>` for ordered lists. |
| 94 | + |
| 95 | +Custom image bullets use `list-style-image` CSS — matches Web Forms behavior. |
| 96 | + |
| 97 | +## Summary |
| 98 | + |
| 99 | +- **Matching:** 19 properties, 6 events |
| 100 | +- **Needs Work:** 0 properties, 0 events |
| 101 | +- **Missing:** 10 properties (AccessKey, ToolTip, DataTextFormatString, DataSourceID, AppendDataBoundItems, SelectedIndex, SelectedItem, SelectedValue, AutoPostBack, CausesValidation, ValidationGroup), 0 events |
| 102 | +- **N/A (server-only):** 7 items |
0 commit comments