DropDownList1.SelectedValue is null?
本文关键字:null is SelectedValue DropDownList1 | 更新日期: 2023-09-27 17:58:53
我无法从下拉框中获得除空值之外的任何其他值,我正在尝试将文件上载到不同的目录。。。
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;
}
}
在访问Value
属性之前进行检查。
if (DropDownList1.SelectedItem != null)
uploadFolder = DropDownList1.SelectedItem.Value;
回发后下拉列表没有值。您只在第一次加载页面时进行绑定,然后页面会返回(索引已更改),项目不会重新绑定。
是否在页面或任何控件上禁用了viewstate?这可能会导致您所描述的问题。
此外,本地变量uploadFolder将永远不会在post-back之间保留。您需要将其存储在会话中或页面上的某个位置。
Session["uploadFolder"] = DropDownList1.SelectedItem.Value
您需要在发布时重新设置DataSource,但不要重新绑定它,否则也会重置所选索引。