【发布时间】:2021-04-05 11:02:33
【问题描述】:
我有一个gridview,它的所有字段都是TemplateField,其中包含文本框作为它的ItemTemplate。该应用程序的想法是让 gridview 通过 SqlDataSource 从数据库中获取模板。然后用户可以通过文本框编辑所需的gridview行并按下按钮将gridview转换为csv文件。
根据我的理解,编辑和更新 gridview 控件会更新数据库值,我不想更改数据库记录。
我的代码
我曾尝试使用此方法,但据我了解,它仅适用于 BoundFields 而不是 Templatefields,因为它在使用 Templatefields 时返回空白值。
Sub ExcelConvertion2()
Response.Clear()
Response.Buffer = True
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv")
Response.Charset = ""
Response.ContentType = "application/text"
Dim sb As StringBuilder = New StringBuilder()
For Each cell As TableCell In GridView1.HeaderRow.Cells
'Append data with separator.
sb.Append(cell.Text & ",")
Next
'Append new line character.
sb.Append(vbCr & vbLf)
For Each row As GridViewRow In GridView1.Rows
For Each cell As TableCell In row.Cells
'Append data with separator.
sb.Append(cell.Text & ",")
Next
'Append new line character.
sb.Append(vbCr & vbLf)
Next
Response.Output.Write(sb.ToString())
Response.Flush()
Response.End()
End Sub
Gridview 代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4" Font-Size="Small">
<Columns>
<asp:TemplateField HeaderText="Handle">
<ItemTemplate>
<asp:TextBox ID="HandleTextBox" runat="server" Text='<%# Eval("Handle") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<asp:TextBox ID="TittleTextBox" runat="server" Text='<%# Eval("Title") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="BodyHTML">
<ItemTemplate>
<asp:TextBox ID="BodyHTMLTextBox" runat="server" Text='<%# Eval("BodyHTML") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Vendor">
<ItemTemplate>
<asp:TextBox ID="VendorTextBox" runat="server" Text='<%# Eval("Vendor") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Type">
<ItemTemplate>
<asp:TextBox ID="TypeTextBox" runat="server" Text='<%# Eval("TYPE") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tags">
<ItemTemplate>
<asp:TextBox ID="TagsTextBox" runat="server" Text='<%# Eval("Tags") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#333333" />
<HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="White" ForeColor="#333333" />
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#487575" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#275353" />
</asp:GridView>
模板示例:
问题
如何将 TemplateField 网格视图转换为 csv 文件。
【问题讨论】:
-
如果你可以使用javascipt,你可以使用
getElementsByTagName("tr")的函数来做到这一点
标签: asp.net vb.net gridview export-to-csv