Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当ListItem不再存在时,DropDownList会引发错误_Asp.net_Vb.net_Drop Down Menu - Fatal编程技术网

Asp.net 当ListItem不再存在时,DropDownList会引发错误

Asp.net 当ListItem不再存在时,DropDownList会引发错误,asp.net,vb.net,drop-down-menu,Asp.net,Vb.net,Drop Down Menu,我正在使用的应用程序是服务台应用程序。我有一个表单,它使用了DropDownList,其中包含来自Active Directory的员工姓名。任何员工都可以提出请求并保存它 当一名员工离开公司,其帐户被从Active Directory中删除时,问题就会出现。当其他员工搜索数据库以查找可能对其有用的相关服务票证时,当尝试打开该票证时,将抛出一个错误,表明该名称在DropDownList项中不存在 我需要的是一个解决方案,使功能保持不变,以便能够删除Active Directory条目,但不会引发

我正在使用的应用程序是服务台应用程序。我有一个表单,它使用了DropDownList,其中包含来自Active Directory的员工姓名。任何员工都可以提出请求并保存它

当一名员工离开公司,其帐户被从Active Directory中删除时,问题就会出现。当其他员工搜索数据库以查找可能对其有用的相关服务票证时,当尝试打开该票证时,将抛出一个错误,表明该名称在DropDownList项中不存在

我需要的是一个解决方案,使功能保持不变,以便能够删除Active Directory条目,但不会引发错误

我正在使用的标签表明,ASP.NET与VB。也欢迎使用C语言的解决方案

提前感谢您对我的问题提出的建议

更新:

我正在添加一些代码,以便更清晰

ASPX:这是一个巨大的问题,我只是在讨论DropDownList

<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" 
        DataKeyNames="ITRequestId">
        <EditItemTemplate>
            <br />
            <asp:LinkButton ID="LinkButton5" runat="server" CausesValidation="True" 
                CommandName="Update" Text="Update" CssClass="InsertLink" />
            &nbsp;&nbsp;&nbsp;<asp:LinkButton ID="LinkButton6" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Cancel" CssClass="CancelLink" />

                    ........    

                    <div id="user" style="float: left;">
                        <label>User:<asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" ErrorMessage="User" Display="Dynamic" ControlToValidate="DropDownList5" Text="*" ForeColor="#FF0000"></asp:RequiredFieldValidator></label><br />
                        <asp:DropDownList ID="DropDownList5" runat="server" SelectedValue='<%# Bind("ITRequestUserName") %>'>
                            <asp:ListItem Value=""></asp:ListItem>
                            <asp:ListItem Value="All">All</asp:ListItem>
                            <asp:ListItem Value="NA">N/A</asp:ListItem>
                        </asp:DropDownList>
                    </div>

                    .........
        </EditItemTemplate>
声明tName变量时,在代码的第11行抛出错误。发生这种情况的原因是,数据库中的用户名(由DropDownList限定)已从ActiveDirectory中删除,因此它不存在于列表的值中

以下是填充DropDownList的代码:

Protected Sub FormView1_ItemCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.ItemCreated
    Dim d1 As DropDownList
    Dim d2 As DropDownList
    Dim myAD As New tActiveDirectory(LDAPpath)
    Dim users As New ArrayList()
    users = myAD.GetAllUsersInfo()
    d1 = DirectCast(FormView1.Row.FindControl("DropDownList5"), DropDownList)
    d2 = DirectCast(FormView1.Row.FindControl("DropDownList7"), DropDownList)
    d1.DataSource = users
    d2.DataSource = users
End Sub

Public Function GetAllUsersInfo() As ArrayList
        Dim Users As New ArrayList()
        Dim myDirectory As New DirectoryEntry(sPath)
        Dim mySearcher As New DirectorySearcher(myDirectory)
        Dim fullName As String
        mySearcher.Filter = "(&(objectCategory=person)(objectClass=user))"
        mySearcher.PropertiesToLoad.Add("sn")
        mySearcher.PropertiesToLoad.Add("displayName")
        mySearcher.Sort.PropertyName = "sn"
        mySearcher.Sort.Direction = SortDirection.Ascending
        Users.Add("")
        Users.Add("N/A")
        Users.Add("All")
        For Each result As DirectoryServices.SearchResult In mySearcher.FindAll
            fullName = result.Properties("displayName")(0).ToString
            Users.Add(fullName)
        Next
        Return Users
    End Function

在此方面的任何帮助都将不胜感激。谢谢。

您的问题没有太多关于代码的细节。但听起来你的应用程序正在尝试在DDL中选择一个不再存在的值。只需在选择之前进行检查,如下所示:

Dim ddl As DropDownList
Dim item As ListItem = ddl.Items.FindByValue("Kostopoulos")
If item IsNot Nothing Then
  ddl.SelectedIndex = ddl.Items.IndexOf(item)
Else
  ddl.Items.Add(New ListItem("Not available"))
  ddl.Enabled = False
End If

您的问题没有太多关于代码的细节。但听起来你的应用程序正在尝试在DDL中选择一个不再存在的值。只需在选择之前进行检查,如下所示:

Dim ddl As DropDownList
Dim item As ListItem = ddl.Items.FindByValue("Kostopoulos")
If item IsNot Nothing Then
  ddl.SelectedIndex = ddl.Items.IndexOf(item)
Else
  ddl.Items.Add(New ListItem("Not available"))
  ddl.Enabled = False
End If

首先,您应该从Dropdownlist中找到listitem,如

  ListItem li=DropdownID.Items.FindByValue("");
  if (li != null)
  DropdownID.SelectedValue = li.Value;

有关更多详细信息,请参见

首先,您应该从Dropdownlist中找到listitem,如

  ListItem li=DropdownID.Items.FindByValue("");
  if (li != null)
  DropdownID.SelectedValue = li.Value;

有关更多详细信息,请参见

我添加了一些代码。你认为你能提供一些见解吗,因为我实际上不能适应你上面给出的代码。提前谢谢。我建议将移动到代码隐藏文件中,例如Page_Load或DropDownList5_Load,在选择之前可以检查该值是否在列表中。根据您的建议,我设法解决了问题。谢谢我添加了一些代码。你认为你能提供一些见解吗,因为我实际上不能适应你上面给出的代码。提前谢谢。我建议将移动到代码隐藏文件中,例如Page_Load或DropDownList5_Load,在选择之前可以检查该值是否在列表中。根据您的建议,我设法解决了问题。谢谢我添加了一些代码。你认为你能提供一些见解吗,因为我实际上不能适应你上面给出的代码。事先谢谢你。根据你的建议,我设法解决了这个问题。谢谢抱歉,添加我的评论的位置错误。我想对ElementenfresserI添加一些代码进行评论。你认为你能提供一些见解吗,因为我实际上不能适应你上面给出的代码。事先谢谢你。根据你的建议,我设法解决了这个问题。谢谢抱歉,添加我的评论的位置错误。我想评论一下Elementenfresser