Changing the DataField of a DataGrid at runtime

Posted on 2006-03-21
Last Modified: 2008-02-01
Hey all,

It's been a while since I did any programming in VB/ASP.NET so don't shoot me if this is obvious.

I have a datagrid control on a page that I populate when the page is loaded. I'm changing the functionality of the page so that based on a certain variable the DataGrid will display different parts of the data (i.e. depending on which user is viewing the data).

I currently deffine the Datagrid in the aspx file as follows:
<TD colSpan="2"><asp:datagrid id="dgdContactsList" runat="server" BorderWidth="1px" BorderColor="#CCCCCC" AllowPaging="True"
            DataKeyField="tContact_id" AutoGenerateColumns="False" PageSize="15">
                              <asp:ImageButton id="Imagebutton1" runat="server" CommandName="ViewContact" CausesValidation="false"
                                    ToolTip="Click to view the contact." ImageUrl="BAS/gui/view.gif"></asp:ImageButton>
                  <asp:BoundColumn DataField="tContact_Fname" SortExpression="tContact_Fname" HeaderText="First Name"></asp:BoundColumn>
                  <asp:BoundColumn DataField="tContact_Lname" SortExpression="tContact_Lname" HeaderText="Last Name"></asp:BoundColumn>
                  <asp:BoundColumn DataField="tContact_OfficeTel" SortExpression="tContact_OfficeTel" HeaderText="Office Tel."></asp:BoundColumn>
                  <asp:BoundColumn DataField="tContact_MobileTel" SortExpression="tContact_MobileTel" HeaderText="Mobile"></asp:BoundColumn>
                  <asp:BoundColumn DataField="tContact_EMail" SortExpression="tContact_EMail" HeaderText="EMail"></asp:BoundColumn>
                  <asp:TemplateColumn Visible="False">
                              <!--<asp:LinkButton runat="server" Text="Edit" CommandName="" CausesValidation="false"></asp:LinkButton>-->
                              <asp:ImageButton id="Imagebutton2" runat="server" CommandName="EditContact" CausesValidation="false"
                                    ToolTip="Click to edit the contact." ImageUrl="BAS/gui/edit.gif"></asp:ImageButton>
                  <asp:TemplateColumn Visible="False">
                              <!--<asp:LinkButton runat="server" Text="Del" CommandName="" CausesValidation="false"></asp:LinkButton>-->
                              <asp:ImageButton id="btn_deletecontact" runat="server" CommandName="DeleteContact" CausesValidation="false"
                                    ToolTip="Click to delete the contact." ImageUrl="BAS/gui/delete.gif"></asp:ImageButton>

So, what i need to do now is write a function that would allow me to change the values of the datafield for the boundcolumns onload of the page. I guess I don't mind creating the boundcolumns as part of that function rather than predefining them in the aspx.

Question by:Esulin
    LVL 25

    Accepted Solution

    Do it in ItemDataBound event:

    private sub dgdContactsList_ItemDatabound(source as object, e as DataGridItemEventArgs) Handles dgdContactsList.ItemDataBound
     if e.Item.ItemType = ListItemType.Item or e.Item.ItemType = ListItemType.AlternatingItem then
       'Do your evaluation and set the column value
       e.Item.Cells(CELL_INDEX).Text = DataBinder.Eval(e.Item.DataItem,"COLUMN_NAME")
     end if
    End sub

    LVL 12

    Expert Comment

    if you need to update a database with the chnage data then I rather predeifned the columns and do the whole process of setting the row to edit mode then using sql to update the db and rebind the grid

    Featured Post

    Top 6 Sources for Identifying Threat Actor TTPs

    Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

    Join & Write a Comment

    Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
    Today is the age of broadband.  More and more people are going this route determined to experience the web and it’s multitude of services as quickly and painlessly as possible. Coupled with the move to broadband, people are experiencing the web via …
    It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
    This video is in connection to the article "The case of a missing mobile phone (". It will help one to understand clearly the steps to track a lost android phone.

    754 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    19 Experts available now in Live!

    Get 1:1 Help Now