我有一个下拉工作,它通过拾取文件夹中的文件然后在下拉列表中显示给最终用户。
但是,如果其中一个文件被删除或移动,则代码会在中途通过,因为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 :(得分:0)
我假设你在这里提到我的回复: Dynamically Add Text Files to DDL in ASP & VB
很容易检测文件是否仍然可用或已删除。但是,您还必须将TextBox放在UpdatePanel中,以便当其中的数据不再有效时可以更新它。如果可能,您可以将其放在同一个UpdatePanel中,或者将其放在具有UpdateMode="Conditional"
的单独UpdatePanel中。将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>
然后刷新DropdownList的代码如下:
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