2014-08-27 26 views
0

我有一个下拉菜单,它通过拾取文件夹中的文件然后在下拉列表中显示给最终用户。下一个可用的项目DDL VB.NET

但是,如果其中一个文件被删除或移动,代码就会中断,因为DDL选择的文件不在那里。

强制回传似乎并没有解决这个问题我试着实现IF/Else函数,但可以得到的代码工作,如果没有发现,然后找到下一个存在。

任何帮助将不胜感激。

下面是我使用的代码:我假设你指的是我的答复这里

Private Sub RefreshDLL() 
    Dim currentSelected As String = DDL.SelectedValue 

     DDL.DataSource = IO.Directory.GetFiles(FolderName, "*.txt").Select(Function(f) IO.Path.GetFileName(f)).ToList 
     DDL.DataBind() 
     DDL.SelectedValue = currentSelected 
End Sub 

回答

0

Dynamically Add Text Files to DDL in ASP & VB

这是很容易检测该文件是否仍然可用或删除。但是,您还必须将TextBox放入UpdatePanel中,以便可以在其内部的数据不再有效时进行更新。如果可能的话,你可以把它放在同一个UpdatePanel中,或者把它放在一个单独的UpdatePanel中,并使用UpdateMode="Conditional"。将UpdateMode设置为Conditional将仅在您想更新TextBox时更新该TextBox,从而减少闪烁。

<asp:UpdatePanel runat="server" ID="UpdatePanel2" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Width="300" Height="250" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

然后将代码刷新下拉列表是这样的:

Private Sub RefreshDropDownList() 
    Dim currentSelected As String = DropDownList1.SelectedValue 
    DropDownList1.DataSource = IO.Directory.GetFiles(FolderName, "*.csv").Select(Function(f) IO.Path.GetFileName(f)).ToList 
    DropDownList1.DataBind() 
    If IO.File.Exists(IO.Path.Combine(FolderName, currentSelected)) Then 
     DropDownList1.SelectedValue = currentSelected 
    Else 
     OpenSelectedFile() 
     UpdatePanel2.Update() 
    End If 
End Sub 
相关问题