各位帮忙看一下,我这个程序为什么不行?想要当点击按钮“aaa”时,把datagrid中的内容输出到excel中!我是用记事本编写的,大家看起来不便的地方请见谅。谢谢大家!
<!-- #include File="SqlFunction.inc" -->
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Text" %>
<Script Language="VB" Runat="Server">
Sub BindList()
dim strsql as string = "select 学号,姓名,题目,教师 from temp,student where temp.学生=student.学号 order by 学号"
myDataGrid.DataSource = CreateDataSet(strsql , "data", "temp")
myDataGrid.DataBind()
End Sub
Sub Page_Load(sender As Object, e As Eventargs)
If Not IsPostBack Then BindList()
End Sub
Sub ExportDataGrid(FileType As String, FileName As String)
Response.Charset = "GB2312"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
Response.AppendHeader("Content-Disposition", "attachment;filename=" & HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8))
Response.ContentType = FileType
Me.EnableViewState = False
Dim tw As System.IO.StringWriter
tw = New System.IO.StringWriter
Dim hw As System.Web.UI.HtmlTextWriter
hw = New HtmlTextWriter(tw)
myDataGrid.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()
End Sub
Sub Btn_Import_Excel_Click(sender As Object, e As EventArgs)
Call ExportDataGrid("application/ms-excel", "指数列表.xls")
End Sub
</Script>
<Html>
<Body>
<center>
<H1 Align="Center">最终选题结果</H1>
<Form Runat="Server">
<input type="button" name="Submit3" value="· 打印最终结果 ·" onclick="document.execCommand('print')">
<Asp:button runat="server" text="aaa" onclike="Btn_Import_Excel_Click" />
<br><br>
<Asp:DataGrid Runat="Server" Id="myDataGrid" AutoGenerateColumns="false" HorizontalAlign="Center" width=80%>
<HeaderStyle Font-Size="Small" Font-Bold="True" HorizontalAlign="Center" ForeColor="black" />
<ItemStyle Font-Size="X-Small" ForeColor="black" HorizontalAlign="Center" />
<Columns>
<Asp:BoundColumn HeaderText="学生学号" DataField="学号" />
<Asp:BoundColumn HeaderText="学生姓名" DataField="姓名" />
<Asp:BoundColumn HeaderText="题目名称" DataField="题目" />
<Asp:BoundColumn HeaderText="指导教师" DataField="教师" />
</Columns>
</Asp:DataGrid>
</Form>
</Body>
</Html>
<!-- #include File="SqlFunction.inc" -->
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Text" %>
<Script Language="VB" Runat="Server">
Sub BindList()
dim strsql as string = "select 学号,姓名,题目,教师 from temp,student where temp.学生=student.学号 order by 学号"
myDataGrid.DataSource = CreateDataSet(strsql , "data", "temp")
myDataGrid.DataBind()
End Sub
Sub Page_Load(sender As Object, e As Eventargs)
If Not IsPostBack Then BindList()
End Sub
Sub ExportDataGrid(FileType As String, FileName As String)
Response.Charset = "GB2312"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
Response.AppendHeader("Content-Disposition", "attachment;filename=" & HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8))
Response.ContentType = FileType
Me.EnableViewState = False
Dim tw As System.IO.StringWriter
tw = New System.IO.StringWriter
Dim hw As System.Web.UI.HtmlTextWriter
hw = New HtmlTextWriter(tw)
myDataGrid.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()
End Sub
Sub Btn_Import_Excel_Click(sender As Object, e As EventArgs)
Call ExportDataGrid("application/ms-excel", "指数列表.xls")
End Sub
</Script>
<Html>
<Body>
<center>
<H1 Align="Center">最终选题结果</H1>
<Form Runat="Server">
<input type="button" name="Submit3" value="· 打印最终结果 ·" onclick="document.execCommand('print')">
<Asp:button runat="server" text="aaa" onclike="Btn_Import_Excel_Click" />
<br><br>
<Asp:DataGrid Runat="Server" Id="myDataGrid" AutoGenerateColumns="false" HorizontalAlign="Center" width=80%>
<HeaderStyle Font-Size="Small" Font-Bold="True" HorizontalAlign="Center" ForeColor="black" />
<ItemStyle Font-Size="X-Small" ForeColor="black" HorizontalAlign="Center" />
<Columns>
<Asp:BoundColumn HeaderText="学生学号" DataField="学号" />
<Asp:BoundColumn HeaderText="学生姓名" DataField="姓名" />
<Asp:BoundColumn HeaderText="题目名称" DataField="题目" />
<Asp:BoundColumn HeaderText="指导教师" DataField="教师" />
</Columns>
</Asp:DataGrid>
</Form>
</Body>
</Html>
也就是说按了“打印最终结果”按钮后转到一个新页面(不能使用模态窗体),在这个新的apsx页面里查询数据库并按照流方式输出到页面上,你的这个处理函数没错,但是这个新aspx页面的前台所有html代码都要删掉,否则会出问题的,出什么问题你自己试试看就明白了。