我认为我是一个简单的堆栈。
我有以下代码:
public void Button1Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
if (FileUpload1.PostedFile.ContentType == "text/xml")
{
string filename = Path.GetFileName(FileUpload1.FileName);
FileUpload1.SaveAs(Server.MapPath("~/") + filename);
StatusLabel.Text = "Upload status: File uploaded!";
DataSet ds = new DataSet();
ds.ReadXml((Server.MapPath(filename)));
GridView1.DataSource = ds;
GridView1.DataBind();
}
else
StatusLabel.Text = "Only xml files are accepted!";
}
}
public void Button2_Click1(object sender, EventArgs e)
{
}
我想要的是用户在button2中执行此代码
DataSet ds = new DataSet();
ds.ReadXml((Server.MapPath(filename)));
GridView1.DataSource = ds;
GridView1.DataBind();
我的问题是变量文件名在
之外不可用public void Button1Click(object sender, EventArgs e)
提前感谢您的帮助! 克里斯
答案 0 :(得分:2)
您可以将变量保存在ViewState页面中,如下所示:
private string fileName
{
get { return ViewState["fileName"] != null ? (string)ViewState["fileName"] : String.Empty; }
set { ViewState["fileName"] = value; }
}
答案 1 :(得分:0)
在上传文件时将文件名保存到Session
或ViewState
。
public void Button1Click(object sender, EventArgs e)
{
..
string filename = Path.GetFileName(FileUpload1.FileName);
...
Session["filename"]=filename;
}
Button2中的代码单击处理程序,
public void Button2_Click1(object sender, EventArgs e)
{
if(Session["filename"]!=null)
{
string filename=Session["filename"].ToString();
DataSet ds = new DataSet();
ds.ReadXml((Server.MapPath("~/" + filename)));
GridView1.DataSource = ds;
GridView1.DataBind();
}
答案 2 :(得分:0)
实际上,你可以拥有大量的变种:
您可以从文件上传控件获取此值,只需使用与Button1Click中使用的方法相同的方法:
string filename = Path.GetFileName(FileUpload1.FileName);
更准确地说,是按照之前的说法存储在ViewState中。
如果您想在其他页面中使用此功能,只需将其保存到会话中。