DataList ignores Styles when WebControlAdapter applies

Discussion in 'ASP .Net' started by Sebastian Paul, Aug 3, 2007.

  1. Hi,
    I registered a WebControlAdapter for any WebControl, that removes all
    ID attributes (I actually do not need them). Everything works as
    expected, but the DataList ignores any styles (ItemStyle,
    SelectedItemStyle etc.). The DataList works as usual, i.e. it uses the
    SelectedItemTemplate for the selected item.
    Other controls, such as the TreeView, apply their styles properly.

    Any idea what's going wrong? It seems like a bug for me. Currently,
    the only workaround I see is to create a special adapter for the
    DataGrid and render the table myself.

    You can reproduce this by adding a .browser file like this:
    <browsers>
    <browser refID="Default">
    <controlAdapters>
    <adapter controlType="System.Web.UI.WebControls.WebControl"

    adapterType="System.Web.UI.WebControls.Adapters.WebControlAdapter" />
    </controlAdapters>
    </browser>
    </browsers>

    In that case, the base class for WebControlAdapters is used. It should
    render the control as usual, shouldn't it?

    Kind regards, Sebastian
    Sebastian Paul, Aug 3, 2007
    #1
    1. Advertising

  2. ....Now I see another issue with the DataList and WebControlAdapter.
    When it is placed inside of a table cell, only the first data item is
    rendered within that cell. The next item is rendered below the table
    row containing the DataList - and so on! Every next item is rendered
    before a table closes. Strange, isn't it?

    I am using a GridView, this works fine with WebControlAdapter and even
    within a DataList.

    Kind regards, Sebastian
    Sebastian Paul, Aug 16, 2007
    #2
    1. Advertising

  3. > I am using a GridView, this works fine with WebControlAdapter and even
    > within a DataList.

    Ok, this is not true when I replace the surrounding DataList by a
    Repeater. But nevertheless, I found the source: Both, DataList and
    DataGrid render a <table> element around their usual table. This
    disturbs the DOM, because <table> elements should contain rows and
    cells.

    I was able to fix that behaviour by overriding WebControlAdapter's
    RenderBeginTag and RenderEndTag methods. This derived
    WebControlAdapter cannot be used for all controls, because most of
    them need their begin and end tags. (I was surprised that the CPU load
    grows incredibly when using this for all controls. I think the
    HtmlWriter does something wierd here.)

    Unfortunately I still don't know what causes DataList and DataGrid to
    discard their Item styles. Maybe I misunderstood some important things
    about the ControlAdapter stuff. As I said, I just want to modify just
    some aspects (i.e. remove IDs) instead of completely exchange the
    rendering process.

    Kind regards, Sebastian
    Sebastian Paul, Aug 17, 2007
    #3
  4. > Unfortunately I still don't know what causes DataList and DataGrid to
    > discard their Item styles.

    Seems like I got it. The DataGrid simply does not need an adapter. So
    I exclude the control like that:

    <controlAdapters>
    <adapter controlType="System.Web.UI.WebControls.DataList"
    adapterType="" />
    <adapter controlType="System.Web.UI.WebControls.GridView"
    adapterType="" />
    <adapter controlType="System.Web.UI.WebControls.WebControl"
    adapterType="MyNamespace.MyWebControlAdapter" />
    </controlAdapters>

    That way, all controls (inclusive those created by DataList or
    DataGrid) are rendered by my Adapter, but the DataGrid itself behaves
    as normal.

    Sebastian
    Sebastian Paul, Aug 17, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Ong Hong Peow
    Replies:
    1
    Views:
    5,006
    David Hilsee
    Sep 6, 2004
  2. Oliver Wong
    Replies:
    14
    Views:
    1,588
    Chris Uppal
    Jun 13, 2006
  3. Larry Bud
    Replies:
    1
    Views:
    392
    Kevin Spencer
    Jun 28, 2007
  4. Ilias Lazaridis
    Replies:
    24
    Views:
    300
    Josef 'Jupp' SCHUGT
    May 12, 2005
  5. Replies:
    5
    Views:
    92
Loading...

Share This Page