Выпадающий список 1.Выбранное значение равно нулю?

#c# #asp.net #drop-down-menu

#c# #asp.net #выпадающее меню

Вопрос:

Я не могу получить ничего, кроме нулевого значения, из моего выпадающего списка, я пытаюсь загрузить файлы в разные каталоги…

 public class dropDownInfo
{
    public string pathName { get; set; }
    public string pathValue { get; set; }
}

string uploadFolder = "";

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // reference to directory
        //DirectoryInfo di = new DirectoryInfo("//DOCSD9F1/TECHDOCS/");
        DirectoryInfo di = new DirectoryInfo("D:/SMGUpload/SMGUpload/files/");

        // create list of directories
        List<dropDownInfo> DropDownList = new List<dropDownInfo>();
        foreach (DirectoryInfo i in di.GetDirectories())
        {
            dropDownInfo ddInfo = new dropDownInfo();
            ddInfo.pathName = i.FullName;
            ddInfo.pathValue = i.FullName;
            DropDownList.Add(ddInfo);
        }
        DropDownList1.DataSource = DropDownList;
        DropDownList1.DataTextField = "pathName";
        DropDownList1.DataValueField = "pathValue";
        DropDownList1.DataBind();
    }
}

protected void DropDownList1_IndexChanged(object sender, EventArgs e)
{
    uploadFolder = DropDownList1.SelectedItem.Value;
}

protected void ASPxUploadControl1_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
{
    if (e.IsValid)
    {
        string uploadDirectory = Server.MapPath("~/files/");
        //string uploadDirectory = @"\DOCSD9F1TECHDOCS";

        string fileName = e.UploadedFile.FileName;

        //string uploadFolder = DropDownList1.SelectedValue;

        //string path = (uploadDirectory   uploadFolder   "/"   fileName);
        string path = Path.Combine(Path.Combine(uploadDirectory, uploadFolder), fileName);

        e.UploadedFile.SaveAs(path);
        e.CallbackData = fileName;
    }
}
  

Комментарии:

1. и использование выпадающего списка 1.выбранный элемент.значение; выдает мне исключение ссылки.

2. @bluetickk не могли бы вы попробовать выпадающий список 1.Выбранное значение?

3. Можете ли вы показать разметку страницы для выпадающего списка 1?

4. <asp: идентификатор выпадающего списка=»Выпадающий список 1″ runat=»server» Width=»280px»></asp: выпадающий список>

5. Вы уверены, что «D:/SMGUpload/SMGUpload/files /» верно?. Если оно существует, вы ничего не получите обратно, если оно пустое.

Ответ №1:

Выполните проверку, прежде чем обращаться к Value свойству.

 if (DropDownList1.SelectedItem != null)
    uploadFolder = DropDownList1.SelectedItem.Value;
  

Комментарии:

1. не объясняет, почему элементы имеют значение null =/

Ответ №2:

Выпадающий список не имеет значений после обратной передачи. Привязка выполняется только при первой загрузке страницы, затем страница публикуется обратно (индекс изменен), и элементы не привязываются повторно.

Комментарии:

1. Итак .. что мне нужно изменить?

Ответ №3:

У вас отключено viewstate на странице или в каком-либо из элементов управления? Это может вызвать проблему, которую вы описываете.

Кроме того, локальная переменная uploadFolder никогда не будет сохранена между обратными отправлениями. Вам нужно сохранить его в сеансе или где-нибудь на странице.

 Session["uploadFolder"] = DropDownList1.SelectedItem.Value
  

Комментарии:

1. теперь это просто uploadfolder, значение которого равно нулю.. я поместил метку, чтобы подтвердить, что выпадающий список 1.selecteditem.text работает, и это так… но по какой-то причине моя папка загрузки отказывается принимать значение

2. Переменная ‘uploadFolder’ будет сбрасываться при каждой записи обратно. Вставьте его в сеанс или используйте выпадающий список 1.Выбранный элемент. Значение напрямую.

Ответ №4:

Вам нужно повторно установить источник данных в post back, но не привязывайте его повторно, иначе это также приведет к сбросу выбранного индекса.