Customizing DataGrid (or any control)


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 5 of 5

Thread: Customizing DataGrid (or any control)

  1. #1
    Join Date
    Jun 2004
    Location
    Pakistan
    Posts
    292

    Customizing DataGrid (or any control)

    Hi, I have to customize a datagrid so that I can have the headers shows up in TH tag instead of TD tag and a few other things that are coming down the road so that those tables are accessible. I searched online and found an example which I was able to use but it's not doing what i want to do the proper (dynamic) way.
    For now this is what I have: a class which Inherits System.Web.UI.WebControls.DataGrid

    Code:
        Protected Overloads Overrides Sub Render(ByVal output As HtmlTextWriter)
            If Not Visible Then
                Return
            End If
            Dim writer As StringWriter = New StringWriter
            Dim buffer As HtmlTextWriter = New HtmlTextWriter(writer)
            MyBase.Render(buffer)
            Dim gridMarkup As String = writer.ToString
            Dim insertPoint As Integer
    
            'grab first instance of TR and closing TR
            Dim intStartTR, intEndTR As Integer
            intStartTR = gridMarkup.IndexOf("<tr>")
            intEndTR = gridMarkup.IndexOf("</tr>")
    
            Dim strHeadRow As String = gridMarkup.Substring(intStartTR, intEndTR - intStartTR)
    
            'replace all TDs that occur in between first TRs with TH
            strHeadRow = strHeadRow.Replace("<td", "<th scope=""col"" ")
            strHeadRow = strHeadRow.Replace("</td>", "</th>")
    
            gridMarkup = gridMarkup.Remove(intStartTR, intEndTR - intStartTR)
            gridMarkup = gridMarkup.Insert(intStartTR, strHeadRow)
            'end adding TH
    
            output.Write(gridMarkup)
    
        End Sub
    The code above does what I want to do for now but as you can see it is sort of a static way of doing things. If I wanted to add something to the TH tag, I would have to add it here and then recompile the code and so on.

    What I really want to do here is be able to create some custom properties (which will become attributes for TABLE) which can be assigned in the asp:TemplateColumn tags and then call them either in this Render or any other method to add them as attributes (headers, ID, etc).

    I tired doing this (changing TD to TH for header items) in the code behind for ASPX page but I didn't get anywhere:
    Code:
    Private Sub onBound(ByVal o As Object, ByVal e As DataGridItemEventArgs) Handles dg2.ItemDataBound
            If e.Item.ItemType = ListItemType.Header Then
                Dim ctr As Control
                For Each ctr In e.Item.Controls
                  'e.Item.RenderControl doesn't do anything
                Next
            End If
        End Sub
    I know what I am asking for might be idiotic or just not possible but I dont see anyother way of getting the functionality of datagrid (without spending a whole lot of time) and yet still make it accessible. Thanks in advance for any help.
    new to programming but getting ther

  2. #2
    Join Date
    Nov 2003
    Location
    Portland, OR
    Posts
    8,387
    Can you do your project in ASP.NET 2.0? It includes a number of improvements for creating accessible Web sites: http://www.15seconds.com/issue/040727.htm

    If not, it looks like there's a patch available for the 1.1 datagrid: http://www.hanselman.com/blog/Sectio...AndASPNET.aspx
    Phil Weber
    http://www.philweber.com

    Please post questions to the forums, where others may benefit.
    I do not offer free assistance by e-mail. Thank you!

  3. #3
    Join Date
    Jun 2004
    Location
    Pakistan
    Posts
    292
    thanks Phill. Unfortunately (or maybe it was planned, hmmm) every programmer got VS2005 a lonnnngggg time ago before me. And I haven't even started playing with it yet.
    Thanks for the link but I am still out of luck for being able to do anything (any customization to add whatever I want to add) regarding the DataGrid class, aren't I?
    new to programming but getting ther

  4. #4
    Join Date
    Mar 2005
    Location
    Los Angeles, Calif. AKA: Gangsta Yoda™
    Posts
    455
    Use css for it. Create a style and then set the datagrids style to it. There are multiple styles for parts like the header, footer, etc.
    VB/Office Guru™ (AKA: Gangsta Yoda®)
    I dont answer code questions via PMs.
    Microsoft MVP 2006-2009
    Office Development FAQ (VBA, VB6, VB.NET, C#)
    Software Engineer MCP (VB6 & .NET)
    Reps & Rating PostsVB/Office Guru™ Word SpellChecker™.NETVB/Office Guru™ Word SpellChecker™ VB6Outlook Global Address List

  5. #5
    Join Date
    Jun 2004
    Location
    Pakistan
    Posts
    292
    Yes, to control the style I am using CSS at many other places but style sheet will only handle the formatting, it's not going to handle the HTML output of the datagird. I am looking for a way to control the HTML output.
    new to programming but getting ther

Similar Threads

  1. Adding DataGrid to a composite control
    By V Lakshmi Narasimhan in forum ASP.NET
    Replies: 1
    Last Post: 07-19-2006, 01:55 PM
  2. MS DataGrid control...
    By lsy in forum C++
    Replies: 0
    Last Post: 08-22-2005, 03:41 AM
  3. Rendering DataGrid within a Composite Control
    By Raymond Naseef in forum ASP.NET
    Replies: 0
    Last Post: 03-21-2002, 12:22 PM
  4. Binding a dropdownlist control within a datagrid control
    By David Livingston in forum ASP.NET
    Replies: 2
    Last Post: 01-26-2001, 03:17 PM
  5. Ado Data Control and DataGrid Control
    By Sok Y. Kim in forum VB Classic
    Replies: 0
    Last Post: 10-25-2000, 07:19 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center