Blue Theme Orange Theme Green Theme Red Theme
 
DevExpress Free UI Controls
Home | Forums | Videos | Photos | Blogs | Beginners | Advertise with Us
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
Discover the top 5 tips for understanding .NET Interop
Search :       Advanced Search »
Home » VB.NET » Embedded Datagrids with Add, Edit and Delete funtionality

Embedded Datagrids with Add, Edit and Delete funtionality

This article features an embedded Datagrids with Add, Edit and Delete funtionality.

Page Views : 15451
Downloads : 0
Rating :
 Rate it
Level : Intermediate
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Team Foundation Server Hosting
Become a Sponsor
Become a Sponsor
 Tag Cloud
 Latest Jobs
More ... 
 Latest Interview Questions
More ... 

The database for this page is

Project_Group_Type (Master Table)
columns (Basic ones):  

Project_Group_Type_ID Description
1 New

Project_Group (Details Table)
columns(Basic ones) :   
Column Name Value
Project_Group_ID 1
Project_Group_Type_ID 1
Project_Group_Description Check


The DataSource

The data source for the Master Datagrid consists of these columns: Project_Group_Type_ID, Description

The data source for the Details Datagrid consists of these columns: Project_Group_ID Project_Group_Type_ID Project_Group_Description

The Datagrid is within another Datagrid (Figure 1).The master Datagrid has project categories Type  and details Datagrid have projects Categories. The detail table has a foreign to the master table.

 



Figure 1

The details Datagrid is expanded as shown in Figure 2.

Figure 2

Now the user can add/edit/delete row to the master/details Datagrid. Now I have created this as user control and used in other aspx pages.

The code is as follows. Declare the Datagrid with following attributes.

<asp:DataGrid ID="dgProjectGroupType" ShowFooter="True" ShowHeader="false" AutoGenerateColumns="False"

CellSpacing="0" BorderStyle="None" BorderWidth="0" GridLines="None" CellPadding="0" Width="100%" runat="server"            OnItemDataBound="dgProjectGroupType_ItemDataBound" OnItemCommand="dgProjectGroupType_ItemCommand">

I have enabled show footer = true in order to add new record for this grid. I have added a new row with textbox and add button. And since I donot require the header have set it to false. I have following events for

  • ItemDataBound: To bind the Inner grid with outer grid.
  • ItemCommand: Handling the events on the master like add,edit,cancel...etc

<FooterStyle Font-Size="Smaller"  />

<ItemStyle Font-Size="Smaller" />

<EditItemStyle BackColor="#CADDEE" Font-Size="Smaller" />

<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True"       ForeColor="#333333" Font-Size="Smaller" />

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" Font-Size="Smaller" />

<HeaderStyle Font-Size="Smaller" />

<AlternatingItemStyle Font-Size="Smaller" />

This is style format I have used for grid, which self explanatory.

<Columns>

The "Columns" is declared under "<Columns>" tags since AutoGenerateColumns is "False".

 

<asp:TemplateColumn HeaderText="" >

<FooterTemplate>

           <asp:TextBox ID="addDescription" runat="Server" />

      </FooterTemplate>

      <ItemTemplate>

&nbsp;&nbsp;&nbsp; <b> <%#DataBinder.Eval(Container.DataItem,"Description")%>

</b>

      </ItemTemplate>

      <EditItemTemplate>

          <asp:TextBox ID="storDescription"

Text=

'<%# DataBinder.Eval(Container.DataItem,"Description")%>'

            runat="server" />

       </EditItemTemplate>

</asp:TemplateColumn>

The footer template, editItem template, item template  for this column are declared under "asp:TemplateColumn".

<asp:TemplateColumn HeaderText="">

<ItemTemplate>

<asp:Label ID="projectGroupTypeID" runat="server" Text=

'<%# DataBinder.Eval(Container.DataItem, "Project_Group_Type_Id")%>' Visible="False" />

      </ItemTemplate>

</asp:TemplateColumn>

This column is used for the editing the master records. This column is the primary key for this master table. Hence made invisible and retrived by the ID of lable and used in internal operations.

<asp:TemplateColumn HeaderText="">

<ItemTemplate>

<asp:DataGrid ID="dgProjectGroup" ShowFooter="True" ShowHeader="true" AutoGenerateColumns="False"

BorderWidth="0" GridLines="None" CellPadding="0" Width="100%" runat="server" OnItemCommand="dgProjectGroup_ItemCommand"

            OnItemDataBound="dgProjectGroup_OnItemDataBound">

 

                   <FooterStyle Font-Size="Smaller" />

            <ItemStyle Font-Size="Smaller" />

            <EditItemStyle BackColor="#CADDEE" Font-Size="Smaller" />

<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" Font-Size="Smaller" />

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" Font-Size="Smaller" />

<HeaderStyle Font-Size="Smaller" />

<AlternatingItemStyle Font-Size="Smaller" />

Here in the "asp:TemplateColumn" where columns are decalred, another datagrid is declared. I have following events for

  • ItemDataBound : refer See code in css.
  • ItemCommand  : Handling the events on the details grid like add, edit, cancel...etc

This is style format I have used for grid, which self explainatary.

<Columns>

The "Columns" is declared under "<Columns>" tags since AutoGenerateColumns is "False".

                   <asp:TemplateColumn HeaderText="">

                             <ItemTemplate>

<asp:Label ID="projectGroupDescription" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_Description")%>'

                  Width="275px" />

                    </ItemTemplate>

            <EditItemTemplate>

<asp:TextBox ID="txtGroup" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_Description") %>'

                  runat="server" Width="275px" />

                </EditItemTemplate>

      <FooterTemplate>

<asp:TextBox ID="addProject" runat="Server" Text="" />

<asp:TextBox ID="addProjectTypeID" runat="Server" Text="" Visible="False" />

            </FooterTemplate>

</asp:TemplateColumn>

Then in the detials datagrid ,Iam displaying the project group description in an itemTemplate,displaying in textbox in edit mode and displaying a empty text on footer of the datagrid.

<asp:TemplateColumn>

          <ItemTemplate>

<asp:Button ID="cmdEditprojectGroup" runat="server" Text="Edit" CommandName="EditGroup" />

<asp:Button ID="cmdDeleteprojectGroup" runat="server" Text="Delete" CommandName="DeleteGroup" />

            </ItemTemplate>

            <EditItemTemplate>

<asp:Button ID="cmdUpdateMeasure" runat="server" Text="Save" CommandName="SaveGroup" />

<asp:Button ID="cmdCancelEditprojectGroup" runat="server" Text="Cancel" CommandName="CancelGroup" />

            </EditItemTemplate>

<FooterStyle    VerticalAlign="Middle"></FooterStyle>

            <FooterTemplate>

<asp:Button ID="cmdAddMeasure" CommandName="InsertGroup" runat="server" Text="Add" />

            </FooterTemplate>

</asp:TemplateColumn>

Again in the details datagrid ,Iam displaying the Edit & delete buttons in an itemTemplate,displaying in save & cancel buttons in edit mode and displaying a add button on footer of the datagrid.

<asp:TemplateColumn HeaderText="" Visible="False">

                   <ItemTemplate>

<asp:Label ID="projectGroupTypeID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Project_Group_Type_ID")%>' Visible="False" />

            </ItemTemplate>

</asp:TemplateColumn>

 

<asp:TemplateColumn HeaderText="" Visible="False">

                   <ItemTemplate>

<asp:Label ID="projectGroupID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_ID")%>' Visible="False" />

            </ItemTemplate>

</asp:TemplateColumn>

 

In the details Datagrid, projectGroupTypeID and projectGroupID are used displayed on the itemtemplate but not visible to users. As these are used for edit and deleting operations.

 

</Columns>

</asp:DataGrid>

End of Inner DataGrid

</ItemTemplate>

End of ItemTemplare of Master DataGrid.

Start of EditItemTemplare for Master DataGrid.

And this is EditItemTemplate for this column when editing. So by another grid in the edititemtemplate you can see still see inner datagrid while editing master Datagrid.

<EditItemTemplate>

<asp:DataGrid ID="dgProjectGroup_Edit" AutoGenerateColumns="False" CellSpacing="0"

SkinID="datagridSkinID" CssClass="dataTable" BorderStyle="None" BorderWidth="0"

GridLines="None" CellPadding="0" Width="100%" runat="server" OnItemCommand="dgProjectGroup_ItemCommand"

            OnItemDataBound="dgProjectGroup_OnItemDataBound">

            <Columns>

`                  <asp:TemplateColumn HeaderText="">

<FooterStyle Font-Size="Small" Font-Bold="false" Wrap="false" BackColor="White" />

                             <ItemTemplate>

<asp:Label ID="projectGroupDescription" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_Description")%>'

                              Width="275px" />

                        </ItemTemplate>

 

                        <FooterTemplate>

<asp:TextBox ID="addProject" runat="Server" Text="" />

<asp:TextBox ID="addProjectTypeID" runat="Server" Text="" Visible="False" />

                        </FooterTemplate>

                  </asp:TemplateColumn>

            </Columns>

          </asp:DataGrid>

       </EditItemTemplate>

//end of EditItemTemplate

    </asp:TemplateColumn>

//end of TemplateColumn

    <asp:TemplateColumn>

          <ItemTemplate>

<asp:Button ID="cmdEditMeasure" runat="server" Text="Edit Category" CommandName="EditCategory" />

<asp:Button ID="cmdDeleteProjectGroupType" runat="server" Text="Delete Category" CommandName="DeleteCategory"

OnClientClick="return confirm('Are you sure you wish to Delete all?');" />

      </ItemTemplate>

      <EditItemTemplate>

<asp:Button ID="btnUpdateMeasure" runat="server" Text="Save Category" CommandName="SaveCategory" />

<asp:Button ID="cmdCancelEditProjectGroupType" runat="server" Text="Cancel Category" CommandName="CancelCategory" />

</EditItemTemplate>

<FooterStyle VerticalAlign="Middle"></FooterStyle>

<FooterTemplate>

<asp:Button ID="cmdAddCategory" CommandName="InsertCategory" runat="server" Text="Add Category" />

</FooterTemplate>

</asp:TemplateColumn>

Again in the Master datagrid, Iam displaying the Edit & delete buttons in an itemTemplate,displaying in save & cancel buttons in edit mode and displaying a add button on footer of the datagrid.

</Columns>

</asp:DataGrid>

End of master Datagrid.

The code File aspx.vb is follows .......

Private dsProject As DataSet

Private dsProjectGroupType As DataTable

Private dsProjectGroup As DataTable

Private projectGroupsAndTypes As ProjectGroupsAndTypes

Private strprojectGroupTypeID As String

Private typeCount As Integer

 

' <summary> 

' Handles the Load event of the Page control. 

' </summary> 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    Try

        projectGroupsAndTypes = New ProjectGroupsAndTypes

        dsProjectGroupType = New DataTable

        dsProjectGroup = New DataTable

        typeCount = 0

        strprojectGroupTypeID = String.Empty

        If Not IsPostBack Then

            LoadData()

        End If

    Catch exception As System.Exception

        Throw exception

    End Try

End Sub

  

' <summary> 

' Loads the data. 

' </summary>

 

Private Sub LoadData()

    Try

        dsProjectGroupType = projectGroupsAndTypes.projectsGroupType

        dsProjectGroupType.TableName = "Master"

        dsProjectGroup = projectGroupsAndTypes.projectGroup

        dsProjectGroup.TableName = "Detail"

        dsProject = New DataSet

        dsProject.Tables.Add(dsProjectGroupType)

        dsProject.Tables.Add(dsProjectGroup)

        Dim relProjectGroups As DataRelation = New DataRelation("relProjectGroups", New DataColumn() {dsProject.Tables("Master").Columns("Project_Group_Type_ID")}, New DataColumn() {dsProject.Tables("Detail").Columns("Project_Group_Type_ID")})

        dsProject.Relations.Add(relProjectGroups)

        dgProjectGroupType.DataSource = dsProject.Tables("Master").DefaultView

        dgProjectGroupType.DataBind()

    Catch exception As System.Exception

        Throw exception

    End Try

End Sub

 

' <summary> 

' Handles the ItemDataBound event of the dgProjectGroupType control. 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see cref="T:System.Web.UI.WebControls.DataGridItemEventArgs"/> instance containing the event data.</param> 

'Here is where the detail grid is binded with data Source. 

'Here there are two cases when it is an  item or edititem. 

'dgProjectGroup gets binds, when grid is not in edit mode. 

'dgProjectGroup_Edit gets bind, when the gird is in edit mode. 

'Note dgProjectGroup is again datagrid as dgProjectGroup.

 

Protected Sub dgProjectGroupType_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem OrElse e.Item.ItemType = ListItemType.EditItem Then

        Dim drvDesc As DataRowView = CType(e.Item.DataItem, DataRowView)

        If e.Item.ItemType = ListItemType.EditItem Then

            CType(e.Item.FindControl("dgProjectGroup_Edit"), DataGrid).DataSource = drvDesc.CreateChildView("relProjectGroups")

            CType(e.Item.FindControl("dgProjectGroup_Edit"), DataGrid).DataBind()

        Else

            CType(e.Item.FindControl("dgProjectGroup"), DataGrid).DataSource = drvDesc.CreateChildView("relProjectGroups")

            CType(e.Item.FindControl("dgProjectGroup"), DataGrid).DataBind()

        End If

    End If

End Sub

 

 

' Handles the ItemCommand event of the dgProjectGroupType control. 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see      cref="T:System.Web.UI.WebControls.DataGridCommandEventArgs"/> instance containing the event data.</param>

 

Public Sub dgProjectGroupType_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)

    If e.CommandName = "InsertCategory" Then

        Dim txtDescription As String = CType(e.Item.Cells(0).FindControl("addDescription"), TextBox).Text

        Dim valid As Boolean = True

        If (txtDescription.Equals(String.Empty)) Then

            valid = False

        End If

        LoadData()

    End If

    If e.CommandName = "DeleteCategory" Then

        Dim ProjectGroupTypeID As Integer = Convert.ToInt32(CType(e.Item.FindControl("projectGroupTypeID"), Label).Text)

        LoadData()

    End If

    If e.CommandName = "EditCategory" Then

        dgProjectGroupType.EditItemIndex = e.Item.ItemIndex

        LoadData()

    End If

    If e.CommandName = "SaveCategory" Then

        Dim ProjectGroupTypeID As Integer = Convert.ToInt32(CType((e.Item.Cells(1).Controls(1)), Label).Text)

        Dim ProjectGroupType As String = CType(e.Item.Cells(0).Controls(1), TextBox).Text

        dgProjectGroupType.EditItemIndex = -1

        LoadData()

    End If

    If e.CommandName = "CancelCategory" Then

        dgProjectGroupType.EditItemIndex = -1

        LoadData()

    End If

End Sub

 

'This is the important Procedure.Because the master ProjectTypeID is always binded with details Datagrid on the footer. 

'So, whenever the a new record is added to the details grid the, we have the foreign key(ProjectTypeID). 

'But there is no way around, other than this which I found to be quite simple and effective. 

'On the footer event of ItemDataBoung, I am adding the ProjectTypeID to textBox(ID = addProjectTypeID). 

'Since this events fires for every record od master table. 

'I am increamenting the count(typeCount) such that detail table are matched to the master table. 

'And this happens for the first time.But this event is fired whenever other edit event is fired on detials datagrid. 

'And value stored in the textbox(ProjectTypeID) might be corrupted. 

'So solution to this is else part.assiging the value which is already available in the details dataGrid.         

 

Public Sub dgProjectGroup_OnItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then

        Dim drvDesc As DataRowView = CType(e.Item.DataItem, DataRowView)

        strprojectGroupTypeID = drvDesc.Row("Project_Group_Type_Id").ToString

    Else

        If e.Item.ItemType = ListItemType.Footer Then

            If strprojectGroupTypeID.Equals(String.Empty) Then

                CType(e.Item.FindControl("addProjectTypeID"), TextBox).Text = Convert.ToString((CType(projectGroupsAndTypes.projectsGroupType(programmeID), DataTable).Rows(typeCount))(0))

            Else

                CType(e.Item.FindControl("addProjectTypeID"), TextBox).Text = strprojectGroupTypeID

                strprojectGroupTypeID = ""

            End If

            System.Math.Min(System.Threading.Interlocked.Increment(typeCount), typeCount - 1)

        End If

    End If

End Sub

 

' Handles the ItemCommand event of the dgProjectGroup control. 

' </summary> 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see                   cref="T:System.Web.UI.WebControls.DataGridCommandEventArgs"/>  

' instance containing the event data.</param>   

 

Public Sub dgProjectGroup_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)

    'insert new record

    If e.CommandName = "InsertGroup" Then

        Dim projectGroupTypeID As Integer = Convert.ToInt32(CType(e.Item.FindControl("addProjectTypeID"), TextBox).Text) 

        Dim txtinnerDescription As String = CType(e.Item.FindControl("addProject"), TextBox).Text 

        Dim valid As Boolean = True 

        If txtinnerDescription.Equals(String.Empty) Then 

            valid = False

        End If

        'Do ever is req here.or something like this.

        'projectGroupsAndTypes.AddProjectGroup

        '(projectGroupTypeID, txtinnerDescription);

        'Load and rebind the data

        LoadData() 

        'Delete the Record

    ElseIf e.CommandName = "DeleteGroup" Then 

        Dim projectGroupID As Integer = Convert.ToInt32(CType(e.Item.FindControl("projectGroupID"), Label).Text) 

        'SomeCode to delete the projectGroupID

        projectGroupsAndTypes.DeleteProjectGroup(projectGroupID) 

        'Bind and rebind the data

        LoadData() 

        'edits inner group

    ElseIf e.CommandName = "EditGroup" Then 

        'Another UserCode Goes here

        'Declare a temporary dataGrid and get referred to details datagrid.

        'Assingn the dataGird editItemIdex with Itemindex.

        Dim tmpDg As DataGrid = CType(sender, DataGrid) 

        tmpDg.EditItemIndex = CInt(e.Item.ItemIndex) 

        'delcare A dataview and get all records of the details //table.

        'And now filter the dataview with the //Project_Group_Type_ID (foreign key in the details //table and primary in the  master table)

        Dim dv As New DataView() 

        dv = projectGroupsAndTypes.projectGroup(programmeID).DefaultView 

        dv.Sort = "Project_Group_Type_ID" 

        'The Project_Group_Type_ID is obtained by the following code.

        Dim objExpr As Object = CType(e.Item.FindControl("projectGroupTypeID"), Label).Text 

        'Now assigning the filtered dataview back to the datagrid(ref as detail dataGrid)

        tmpDg.DataSource = dv.FindRows(objExpr) 

        tmpDg.DataBind() 

        ' saves edited data

    ElseIf e.CommandName = "SaveGroup" Then 

        Dim emp_id As Integer = e.Item.ItemIndex 

        Dim tmpDg As DataGrid = CType(sender, DataGrid) 

        'retriving the ProjectGroupID from hidden control

        Dim ProjectGroupID As Integer = Convert.ToInt32(CType(e.Item.FindControl("projectGroupID"), Label).Text) 

        'retriving the ProjectGroup from hidden control

        Dim ProjectGroup As String = CType(e.Item.FindControl("txtGroup"), TextBox).Text 

        'performing some action to save

        projectGroupsAndTypes.updateProjectGroup(ProjectGroupID, ProjectGroup)

         'cancelling the edit eventby setting edititemindex to -1

        tmpDg.EditItemIndex = -1 

        'delcare A dataview and get all records of the details //table.

        Dim dv As DataView = projectGroupsAndTypes.projectGroup(programmeID).DefaultView 

        dv.Sort = "Project_Group_Type_ID" 

        'The Project_Group_Type_ID is obtained by the following code.

        Dim objExpr As Object = CType(e.Item.FindControl("projectGroupTypeID"), Label).Text 

        'Now assigning the filtered dataview back to the datagrid(ref as detail dataGrid)

        tmpDg.DataSource = dv.FindRows(objExpr) 

        tmpDg.DataBind() 

        'cancel the action

    ElseIf e.CommandName = "CancelGroup" Then 

        Dim tmpDg As DataGrid = CType(sender, DataGrid) 

        tmpDg.EditItemIndex = -1 

        'delcare A dataview and get all records of the details //table.

        Dim dv As DataView = projectGroupsAndTypes.projectGroup(programmeID).DefaultView 

        dv.Sort = "Project_Group_Type_ID" 

        'The Project_Group_Type_ID is obtained by the following code.

        Dim objExpr As Object = CType(e.Item.FindControl("projectGroupTypeID"), Label).Text 

        'Now assigning the filtered dataview back to the datagrid(ref as detail dataGrid)

        tmpDg.DataSource = dv.FindRows(objExpr) 

        tmpDg.DataBind()

    End If

End Sub 'dgProjectGroup_ItemCommand

 

NOTE: THIS ARTICLE IS CONVERTED FROM C# TO VB.NET USING A CONVERSION TOOL. ORIGINAL ARTICLE CAN BE FOUND ON C# CORNER (http://www.c-sharpcorner.com/).

 

 

Comment Request!
Thank you for reading this post. Please post your feedback, question, or comments about this post Here.
Login to add your contents and source code to this article
 [Top] Rate this article
 
 About the author
 
Rammanohar
Working on Microsoft technologies.Presently on Asp.net and C# as a contractor.
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Discover the top 5 tips for understanding .NET
Ricky Leeks presents the top 5 tips for understanding .NET Interoperability. Learn more.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
ASP.NET 4 Hosting
Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites – Click Here!
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
Discover the top 5 tips for understanding .NET Interop
Become a Sponsor
 Comments
problem by Neeraj On September 4, 2007
i am using nested datagrid embeedded in each other upto third level.when i click edit(pushbutton) of third(child) datagrid i am not able to reterieve third datagrid otherwise everything works perfectly.plz suggest me something.
Reply | Email | Modify 
Mindcracker MVP Summit 2012
 © 2012  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.