【发布时间】:2017-08-03 08:00:16
【问题描述】:
我对 ASP.NET 完全陌生。我正在构建 4 页。应该将gridview 导入页面。并且有一个类可以保存它。在另一页我应该得到gridview。但是当我加载页面时出现错误:
RegisterRequiresControlState只能在PreRender之前和期间调用。
这是我的页面加载代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Data._grid != null)
{
p1.Controls.Add(Data._grid);
}
else
{
}
}
对于 aspx:
<asp:Panel runat="server" ID="p1"></asp:Panel>
这里是保存gridview到类的代码:
protected void import_btn_Click(object sender, EventArgs e)
{
string filepath = ConfigurationManager.AppSettings["FilePath"].ToString();
string filename = string.Empty;
string[] allowedfile = { ".xls", ".xlsx" };
string filetext = Path.GetExtension(FileUpload1.PostedFile.FileName);
if (!allowedfile.Contains(filetext))
{
}
else
{
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 1048576)
{
filename = Path.GetFileName(Server.MapPath(FileUpload1.FileName));
FileUpload1.SaveAs(Server.MapPath(filepath) + filename);
string _filepath = Server.MapPath(filepath) + filename;
OleDbConnection con = null;
if (filetext == ".xls")
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _filepath + ";Extended Properties=Excel 8.0");
}
else if (filetext == ".xlsx")
{
con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + _filepath + "';Extended Properties=Excel 12.0;");
}
con.Open();
DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string get_sheet = dt.Rows[0]["Table_Name"].ToString();
OleDbCommand excelcommand = new OleDbCommand(@"SELECT * FROM [" + get_sheet + @"]", con);
OleDbDataAdapter exceladapter = new OleDbDataAdapter(excelcommand);
DataSet exceldataset = new DataSet();
exceladapter.Fill(exceldataset);
con.Close();
grid.DataSource = exceldataset;
grid.DataBind();
Data._grid = grid;
}
}
【问题讨论】: