[英]Use a variable in different classes in webforms c#
我認為,我的東西很簡單。
我有以下代碼:
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)
在此先感謝您的幫助! 克里斯
你可以將變量保存在頁面ViewState中,如下所示:
private string fileName
{
get { return ViewState["fileName"] != null ? (string)ViewState["fileName"] : String.Empty; }
set { ViewState["fileName"] = value; }
}
上傳文件時將文件名保存到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();
}
實際上你可以在這里擁有大量的變種:
您可以從文件上傳控件中獲取此值,只需使用與Button1Click中使用的方法相同的方法:
string filename = Path.GetFileName(FileUpload1.FileName);
更准確地說,是按照之前的說法存儲在ViewState中。
如果要在其他頁面中使用它,只需將其保存到會話中即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.