我有一个 GridView 并且在后面的代码中,我将其转换为页面中按钮单击事件上的 Excel 工作表............代码在 aspx 中如下所示。
<form id="form1" runat="server">
<table width="1100" border="0" cellpadding="0" cellspacing="0" style="height:100%; background-color:White" align="center">
<tr><td> </td></tr>
<tr>
<td align="center">
<asp:Button ID="DividendEportToExcel" runat="server" Text="Convert To Excel"
CssClass="bluesome" onclick="DividendEportToExcel_Click" />
</td>
</tr>
<tr>
<td>
<asp:GridView ID="MemberDividendView" runat="server">
</asp:GridView>
</td>
</tr>
</table>
</form>
在后面的代码中,我正在执行以下操作:
protected void DividendEportToExcel_Click(object sender, EventArgs e)
{
MemberDividendView.Columns.RemoveAt(5);
MemberDividendView.ShowHeader = true;
MemberDividendView.GridLines = GridLines.Both;
MemberDividendView.PagerSettings.Visible = false;
MemberDividendView.DataBind();
ChangeControlsToValue(MemberDividendView);
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=AdjustmentDetialsToExcel.xls");
Response.ContentType = "application/excel";
StringWriter sWriter = new StringWriter();
HtmlTextWriter hTextWriter = new HtmlTextWriter(sWriter);
HtmlForm hForm = new HtmlForm();
MemberDividendView.Parent.Controls.Add(hForm);
hForm.Attributes["runat"] = "server";
hForm.Controls.Add(MemberDividendView);
hForm.RenderControl(hTextWriter);
Response.Write(sWriter.ToString());
Response.End();
}
private void ChangeControlsToValue(Control gridView)
{
Literal literal = new Literal();
for (int i = 0; i < gridView.Controls.Count; i++)
{
if (gridView.Controls[i].GetType() == typeof(LinkButton))
{
literal.Text = (gridView.Controls[i] as LinkButton).Text;
gridView.Controls.Remove(gridView.Controls[i]);
//gridView.Controls.AddAt(i,literal);
}
else if (gridView.Controls[i].GetType() == typeof(DropDownList))
{
literal.Text = (gridView.Controls[i] as DropDownList).SelectedItem.Text;
gridView.Controls.Remove(gridView.Controls[i]);
//gridView.Controls.AddAt(i,literal);
}
else if (gridView.Controls[i].GetType() == typeof(CheckBox))
{
literal.Text = (gridView.Controls[i] as CheckBox).Checked ? "True" : "False";
gridView.Controls.Remove(gridView.Controls[i]);
//gridView.Controls.AddAt(i,literal);
}
if (gridView.Controls[i].HasControls())
{
ChangeControlsToValue(gridView.Controls[i]);
}
}
}
但是我的列仍然没有在 Excel 表中被删除........错误是什么?