2014-08-27 1 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를 업데이트 할 수 있도록 TextBox를 UpdatePanel에 두어야합니다. 그 안에 데이터가 더 이상 유효하지 않으면 TextBox를 업데이트해야합니다. 가능한 경우 동일한 UpdatePanel에 넣을 수도 있고 UpdateMode="Conditional"이라는 별도의 UpdatePanel에 넣을 수도 있습니다. UpdateMode를 Conditional로 설정하면 업데이트 할 때만 해당 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 
관련 문제