2

コーディングの問題:

コントロールを持つ Asp.Net GridView をデータ テーブルに変換する

現実世界の問題:

Google には、私が見つけて実装できる本当に役立つ回答がありませんでした

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
4

2 に答える 2

4

解決:

  1. gvCompanies は GridView です
  2. dtCompanies は元の DataTable でした
  3. if else を別のコントロール タイプに追加できます

    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;
    }
    
于 2012-11-30T20:17:26.780 に答える