2011-06-08 79 views
0

您访问Value财产之前,我无法从我的下拉框中得到比一个空值以外的其他,我尝试将文件上传到不同的目录...DropDownList1.SelectedValue为空?

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 = @"\\DOCSD9F1\TECHDOCS\"; 

     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; 
    } 
} 
+0

并使用dropdownlist1.selecteditem.value;给了我一个参考例外。 – bluetickk 2011-06-08 17:13:42

+0

@bluetickk你可以尝试DropDownList1.SelectedValue吗? – thomasvdb 2011-06-08 17:38:03

+0

同样的事情,它仍然是null – bluetickk 2011-06-08 17:53:03

回答

0

做一次检查。

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

does not解释为什么这些项目为空=/ – bluetickk 2011-06-08 17:25:56

0

回发后下拉没有值。您只在第一次加载页面时绑定,然后回发页面(索引已更改),并且不会重新绑定项目。

+0

所以..我需要改变什么? – bluetickk 2011-06-08 19:12:03

0

您是否在页面或任何控件上禁用了viewstate?这可能会导致您所描述的问题。

此外,本地变量uploadFolder将永远不会保留在回发之间。您需要将其存储在会话中或某个地方的页面上。

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

现在它只是上传文件夹是空..我放置了一个标签,以确认dropdownlist1.selecteditem.text正在工作,它是...但由于某种原因,我上传文件夹拒绝采取值 – bluetickk 2011-06-08 19:47:10

+0

'uploadFolder'变量将是重置每个帖子。将其粘贴到会话中或直接使用DropDownList1.SelectedItem.Value。 – nbushnell 2011-06-08 19:57:44

0

您需要在回发时重新设置DataSource,但不要重新绑定或重置所选索引。

相关问题