Coding Problem:
Converting a Asp.Net GridView that has controls back into a data table
Real World Problem:
Google did not have any really useful answers I could find and implement
Asp.Net GridView:
<asp:GridView ID="gvCompanies" runat="server" AutoGenerateColumns="False" AllowSorting="True" OnSorting="gridView_Sorting">
<Columns>
<asp:TemplateField HeaderText = "Comapny Id"><ItemTemplate><%# Eval("Company Id")%></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "New Company Id"><ItemTemplate><asp:TextBox ID="TextBox5" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Company Name"><ItemTemplate><asp:TextBox ID="TextBox6" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Branch Id"><ItemTemplate><asp:TextBox ID="TextBox7" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Location Id"><ItemTemplate><asp:TextBox ID="TextBox8" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Location Name"><ItemTemplate><asp:TextBox ID="TextBox9" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Prefix"><ItemTemplate><asp:TextBox ID="TextBox10" runat ="server" ></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Sort"><ItemTemplate><asp:TextBox ID="TextBox11" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Cash In Transit"><ItemTemplate><asp:TextBox ID="TextBox12" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Cash Sub In Transit"><ItemTemplate><asp:TextBox ID="TextBox13" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Cash Account"><ItemTemplate><asp:TextBox ID="TextBox14" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Cash Sub Account"><ItemTemplate><asp:TextBox ID="TextBox15" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "Payment Method"><ItemTemplate><asp:TextBox ID="TextBox16" runat ="server"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText = "AppDB"><ItemTemplate><%# Eval("AppDB")%></ItemTemplate></asp:TemplateField>
</Columns>
</asp:GridView
Solution:
Can add more if else for different control types
protected DataTable ConvertToDataTable() { DataTable TempTable = new DataTable(); TempTable = dtCompanies.Clone(); foreach (GridViewRow row in gvCompanies.Rows) { DataRow TempRow = TempTable.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { if (row.Cells[i].Controls[0].GetType().Equals(typeof(DataBoundLiteralControl))) { TempRow[i] = ((DataBoundLiteralControl)row.Cells[i].Controls[0] as DataBoundLiteralControl).Text; } else if (row.Cells[i].Controls[0].GetType().Equals(typeof(TextBox))) { TempRow[i] = ((TextBox)row.Cells[i].Controls[0]).Text; } } TempTable.Rows.Add(TempRow); } return TempTable; }
Dim Rectab As New DataTable 'Take A new Data Table
'------Add Columns into your DataTable----------------
For k As Integer = 0 To CalibSchdNameAry.Length - 1
Rectab.Columns.Add(CalibSchdNameAry(k))
Next
'-----------------------------------------------------
'------Add Rows Data Into Your Datatable From Html Table-------
For i As Integer = 0 To ClbTab.Rows.Count - 1
Rectab.Rows.Add()
For j As Integer = 0 To CalibSchdNameAry.Length - 1
If i + 1 < ClbTab.Rows.Count - 1 Then
Rectab.Rows(i).Item(CalibSchdNameAry(j)) = ClbTab.Rows(i + 1).Cells(j).Text
End If
Next
Next
'-----------------Now Your Datatable is ready To Use---------------Suresh.A------
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.