|
code
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Problem adding attributes to DataListItem..I have created a custom class that derives from DataList so that I can add some custom client side functionality into each new item row (<td>). Heres the class in its simplest form: public class MyDataList : DataList { public string MyValue1 = "alert('Hey there!');"; public string MyValue2 = "alert('Hey there yourself!');"; protected override DataListItem CreateItem(int itemIndex, ListItemType itemType) { DataListItem item = base.CreateItem(itemIndex, itemType); if (itemType == ListItemType.Item || itemType == ListItemType.AlternatingItem) { item.Attributes.Add("onmouseover", MyValue1); item.Attributes.Add("onmouseout", MyValue2); } return item; } } Pretty simple right? Well, when I put MyDataList on the page and DataBind() my items to it, the attributes are NOWHERE to be seen. The items and their values show up great, just not my attributes. Anyone have any thoughts? Thanx! J'son J'son,
I think instead of adding the attributes in the overriden function you should try adding the attributes after the items have been created by using the OnItemDatabound event. I have successfully added attributes within the event. -- Show quoteHide quoteSincerely, S. Justin Gengo, MCP Web Developer / Programmer www.aboutfortunate.com "Out of chaos comes order." Nietzsche "J'son" <sitexc***@hotmail.com> wrote in message news:1134421441.751535.89180@z14g2000cwz.googlegroups.com... > Guys, > > I have created a custom class that derives from DataList so that I can > add some custom client side functionality into each new item row > (<td>). Heres the class in its simplest form: > > public class MyDataList : DataList > { > public string MyValue1 = "alert('Hey there!');"; > public string MyValue2 = "alert('Hey there yourself!');"; > > protected override DataListItem CreateItem(int itemIndex, > ListItemType itemType) > { > DataListItem item = base.CreateItem(itemIndex, itemType); > > if (itemType == ListItemType.Item || itemType == > ListItemType.AlternatingItem) > { > item.Attributes.Add("onmouseover", MyValue1); > item.Attributes.Add("onmouseout", MyValue2); > } > > return item; > } > } > > Pretty simple right? Well, when I put MyDataList on the page and > DataBind() my items to it, the attributes are NOWHERE to be seen. The > items and their values show up great, just not my attributes. > > Anyone have any thoughts? > > Thanx! > > J'son > Justin,
I can add attributes via the web page in just about any of the "OnItem" events for the DataList. What I would like to do is to create a reusable DataList control that would add the attributes with preset values ready to go. That way I could do something like this: <cc1:MyDataList id="MyDataList1" runat="server" MouseOverItemValue="some value" MouseOutItemValue="someother value"> It seems pretty straightforward but I must be missing something.. Thanx J'son I ran into the same problem with my control extending the DataList. I think
that the adding the attributes to the DataListItem wont work. What I ended up doing was iterating over the DataListItem.Controls collection in the OnPreRender event (CreateItem is too early). The first item in the collection is not a WebControl and will not accept the attributes, however if your template displays a control that resolves to a WebControl you can apply the attribute. Here's an example of what I did. dim ctl as Control dim webctl as WebControl For Each ctl in item.Controls Try webctl = DirectCast(ctl,WebControl) webctl.Attributes.Add("onmouseover",MyValue1) Catch End Try Next That was my solution to the problem. If you come up with a better way please let me know. Also, did you run into anything like the 'active schema does not support.." problem I posted on the post right above this one? Any way, hope this helps! Cheers! Show quoteHide quote "J'son" wrote: > Guys, > > I have created a custom class that derives from DataList so that I can > add some custom client side functionality into each new item row > (<td>). Heres the class in its simplest form: > > public class MyDataList : DataList > { > public string MyValue1 = "alert('Hey there!');"; > public string MyValue2 = "alert('Hey there yourself!');"; > > protected override DataListItem CreateItem(int itemIndex, > ListItemType itemType) > { > DataListItem item = base.CreateItem(itemIndex, itemType); > > if (itemType == ListItemType.Item || itemType == > ListItemType.AlternatingItem) > { > item.Attributes.Add("onmouseover", MyValue1); > item.Attributes.Add("onmouseout", MyValue2); > } > > return item; > } > } > > Pretty simple right? Well, when I put MyDataList on the page and > DataBind() my items to it, the attributes are NOWHERE to be seen. The > items and their values show up great, just not my attributes. > > Anyone have any thoughts? > > Thanx! > > J'son > >
Result not expected with user control - any ideas why/
Role based security Tabbed control for ASP.NET pages Trouble with radio button list in Asp.net 1.1 Could not load type XXXXXX from assembly mscorlib Low level programing in ASP .Net datagrid value grouping The lowly data field DropDownList(ddlist) and TextBox(tbox) Find the source of an event |
|||||||||||||||||||||||