下一个可用项目DDL VB.NET

时间:2014-08-27 09:52:35

标签: asp.net 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

1 个答案:

答案 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