Используйте переменную в разных классах в webforms c # - PullRequest
0 голосов
/ 10 октября 2011

Я думаю, что я в стеке.

У меня есть следующий код:

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();

Моя проблема в том, что переменная filename не доступна за пределами

public void Button1Click(object sender, EventArgs e)

Заранее спасибо за помощь! Chris

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

Вы можете сохранить переменную на странице ViewState следующим образом:

private string fileName
{
    get { return ViewState["fileName"] != null ? (string)ViewState["fileName"] : String.Empty; }
    set { ViewState["fileName"] = value; }
}
0 голосов
/ 10 октября 2011

На самом деле здесь вы можете иметь огромное количество вариантов:

  1. Вы можете получить это значение из элемента управления загрузкой файлов, просто используя тот же метод, который использовался в Button1Click:

    string filename = Path.GetFileName(FileUpload1.FileName);
    
  2. Вернее, хранить в ViewState, как было сказано ранее.

  3. Если вы хотите использовать это на других страницах, просто сохранитеэто к сессии.

0 голосов
/ 10 октября 2011

Сохраните имя файла в 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();
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...