在其AutoGenerateColumns = true时将gridview导出到csv

时间:2013-07-17 22:57:20

标签: visual-studio gridview export-to-csv autogeneratecolumn

我正在微软视觉工作室中编写一个网页,其中有一个显示报告的网格视图。我想有一个按钮将此gridview导出到csv文件   只要gridview有

,我就可以让导出按钮工作

AutoGenerateColumns =“False”

但我需要AutoGenerateColumns为true,因为我使用此代码动态填充gridview。

enter code here

Dim gv As GridView = pnlGridViews.FindControl("gv0")
    Dim lbl As Label = pnlGridViews.FindControl("lbl0")
    gv.Visible = True

    Dim sql As String = "select net_id, byu_id, rest_of_name  || ' ' || last_name as     NAME, acc_balance as HOUSING_AMOUNT, din_balance as DINING_AMOUNT, " & _
                        "(acc_balance + din_balance) as TOTAL from housing.PEOPLE     where acc_balance >0 or din_balance > 0 order by net_id"
    Dim result As CoreData

    result = QueryDB.GetAllResultsCD(sql)

    Dim dt As New DataTable()

    'make the columns

    dt.Columns.Add("NET_ID", Type.GetType("System.String"))
    dt.Columns.Add("BYU_ID", Type.GetType("System.String"))
    dt.Columns.Add("NAME", Type.GetType("System.String"))
    dt.Columns.Add("HOUSING_AMOUNT", Type.GetType("System.String"))
    dt.Columns.Add("DINING_AMOUNT", Type.GetType("System.String"))
    dt.Columns.Add("TOTAL", Type.GetType("System.String"))
    dt.Columns.Add("FaWi(HS)", Type.GetType("System.String"))
    dt.Columns.Add("FaWi(MP)", Type.GetType("System.String"))
    dt.Columns.Add("Wint(HS)", Type.GetType("System.String"))
    dt.Columns.Add("Wint(MP)", Type.GetType("System.String"))
    dt.Columns.Add("SpSu(HS)", Type.GetType("System.String"))
    dt.Columns.Add("SpSu(MP)", Type.GetType("System.String"))
    dt.Columns.Add("Sprg(HS)", Type.GetType("System.String"))
    dt.Columns.Add("Sprg(MP)", Type.GetType("System.String"))
    dt.Columns.Add("Sumr(HS)", Type.GetType("System.String"))
    dt.Columns.Add("Sumr(MP)", Type.GetType("System.String"))
    dt.Columns.Add("AcYr(HS)", Type.GetType("System.String"))
    dt.Columns.Add("AcYr(MP)", Type.GetType("System.String"))
    dt.Columns.Add("Else", Type.GetType("System.String"))


    For Each person In result
        dt.Rows.Add()

        Dim fawi_hs As String = ""
        Dim fawi_mp As String = ""
        Dim wint_hs As String = ""
        Dim wint_mp As String = ""
        Dim spsu_hs As String = ""
        Dim spsu_mp As String = ""
        Dim spr_hs As String = ""
        Dim spr_mp As String = ""
        Dim sumr_hs As String = ""
        Dim sumr_mp As String = ""
        Dim acyr_hs As String = ""
        Dim acyr_mp As String = ""
        Dim yearly As String = ""
        Dim meal_plan As String = ""
        Dim bedspace As String = ""
        Dim agr_prd As String = ""


        Dim net_id As String = person("NET_ID")
        Dim byu_id As String = person("BYU_ID")
        Dim name As String = person("NAME")
        Dim h_amt As String = person("HOUSING_AMOUNT")
        Dim d_amt As String = person("DINING_AMOUNT")
        Dim total As String = person("TOTAL")



        Dim sql2 As String = "select item_type, common_id as byu_id, item_amt,applied_amt,(item_amt - applied_amt) as bal, ACCOUNT_TYPE_SF, item_term from link.ps_item_sf_lnk where " & _
                            "common_id = '" & byu_id & "' and ACCOUNT_TYPE_SF in ('ACC','DIN','DPH') and due_dt < sysdate and item_amt - applied_amt <> 0"


        Dim result2 As CoreData

        result2 = QueryDB.GetAllResultsCD(sql2)

        If byu_id = "949888717" Then
            'Hello
            byu_id = byu_id
        End If
        For Each delinquent In result2

            Dim term_id As String = delinquent("ITEM_TERM")

            Dim sql_terms As String = "select * from housing.RS_SNG_CES_TERMS where ps_term_id = '" & term_id & "'"
            Dim result_term As CoreData
            result_term = QueryDB.GetOneResultCD(sql_terms)

            Dim agr As String
            If Not result_term Is Nothing Then
                agr = result_term("AGR_PRD_ID")
            Else
                agr = "None"
            End If
            Dim act_type As String = delinquent("ACCOUNT_TYPE_SF")
            Dim bal As Decimal = delinquent("BAL")
            Dim current_sum As Decimal

            If agr.EndsWith("FaWi") And act_type = "ACC" Then
                current_sum = getCurrencyDecimal(fawi_hs)
                fawi_hs = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("FaWi") And act_type = "DIN" Then
                current_sum = getCurrencyDecimal(fawi_mp)
                fawi_mp = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("Wint") And act_type = "ACC" Then
                current_sum = getCurrencyDecimal(wint_hs)
                wint_hs = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("Wint") And act_type = "DIN" Then
                current_sum = getCurrencyDecimal(wint_mp)
                wint_mp = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("Sumr") And act_type = "ACC" Then
                current_sum = getCurrencyDecimal(sumr_hs)
                sumr_hs = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("Sumr") And act_type = "DIN" Then
                current_sum = getCurrencyDecimal(sumr_mp)
                sumr_mp = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("Sprg") And act_type = "ACC" Then
                current_sum = getCurrencyDecimal(spr_hs)
                spr_hs = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("Sprg") And act_type = "DIN" Then
                current_sum = getCurrencyDecimal(spr_mp)
                spr_mp = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("SpSu") And act_type = "ACC" Then
                current_sum = getCurrencyDecimal(spsu_hs)
                spsu_hs = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("SpSu") And act_type = "DIN" Then
                current_sum = getCurrencyDecimal(spsu_mp)
                spsu_mp = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("AcYr") And act_type = "ACC" Then
                current_sum = getCurrencyDecimal(acyr_hs)
                acyr_hs = String.Format("{0:$#,##0.00}", bal + current_sum)
            ElseIf agr.EndsWith("AcYr") And act_type = "DIN" Then
                current_sum = getCurrencyDecimal(acyr_mp)
                acyr_mp = String.Format("{0:$#,##0.00}", bal + current_sum)
            Else
                current_sum = getCurrencyDecimal(yearly)
                yearly = String.Format("{0:$#,##0.00}", bal + current_sum)
            End If

        Next


        dt.Rows(dt.Rows.Count - 1)("NET_ID") = net_id
        dt.Rows(dt.Rows.Count - 1)("BYU_ID") = byu_id
        dt.Rows(dt.Rows.Count - 1)("NAME") = name
        If Not h_amt Is Nothing And Not h_amt = "" Then
            dt.Rows(dt.Rows.Count - 1)("HOUSING_AMOUNT") = String.Format("`enter code here`{0:$#,##0.00}", Decimal.Parse(h_amt))
        End If
        If Not d_amt Is Nothing And Not d_amt = "" Then
            dt.Rows(dt.Rows.Count - 1)("DINING_AMOUNT") = String.Format("`enter code here`{0:$#,##0.00}", Decimal.Parse(d_amt))
        End If
        If Not total Is Nothing And Not total = "" Then
            dt.Rows(dt.Rows.Count - 1)("TOTAL") = String.Format("{0:$#,##0.00}", `enter code here`Decimal.Parse(total))
        End If
        dt.Rows(dt.Rows.Count - 1)("FaWi(HS)") = fawi_hs
        dt.Rows(dt.Rows.Count - 1)("FaWi(MP)") = fawi_mp
        dt.Rows(dt.Rows.Count - 1)("Wint(HS)") = wint_hs
        dt.Rows(dt.Rows.Count - 1)("Wint(MP)") = wint_mp
        dt.Rows(dt.Rows.Count - 1)("SpSu(HS)") = spsu_hs
        dt.Rows(dt.Rows.Count - 1)("SpSu(MP)") = spsu_mp
        dt.Rows(dt.Rows.Count - 1)("Sprg(HS)") = spr_hs
        dt.Rows(dt.Rows.Count - 1)("Sprg(MP)") = spr_mp
        dt.Rows(dt.Rows.Count - 1)("Sumr(HS)") = sumr_hs
        dt.Rows(dt.Rows.Count - 1)("Sumr(MP)") = sumr_mp
        dt.Rows(dt.Rows.Count - 1)("AcYr(HS)") = acyr_hs
        dt.Rows(dt.Rows.Count - 1)("AcYr(MP)") = acyr_mp
        dt.Rows(dt.Rows.Count - 1)("Else") = yearly

    Next

    gv.DataSource = dt

    gv.DataBind()

    lbl.Text = "<br/>Total Records: " & gv.Rows.Count & "<br/><br/>"

导出按钮的代码如下所示

enter code here尝试

        Response.Clear()

        Response.Buffer = True

        Response.AddHeader("content-disposition",       `enter code here`"attachment;filename=GridViewExport.csv")

        Response.Charset = ""

        Response.ContentType = "application/text"



        'gv0.AllowPaging = False

        'gv0.DataBind()

        Dim exportStr As String = ""

        exportStr &= Mha.GridViews.ToCSV(gv0) & Environment.NewLine

        'append new line


        Response.Output.Write(exportStr)

        Response.Flush()

        Response.End()

    Catch ex As Exception
        'do nothing
    End Try

有关如何导出此gridview的任何想法,同时还允许我事先动态填充gridview?

0 个答案:

没有答案