Ошибка: ddlgvRooms 'имеет значение SelectedValue, которое недопустимо, поскольку его нет в списке элементов.Имя параметра: значение
Я читал много людей, имеющих проблемы с этой конкретной проблемой, но ни одно из исправлений не сработало для моего случая. Я пробовал несколько разных вещей, таких как установка appenddatabounditems = "truemsgstr "также пытался установить в коллекции элементов значение по умолчанию.Большинство постов на этом форуме, которые я прочитал, были сделаны пару лет назад, и я надеюсь, что они уже исправили эту ошибку, и я просто что-то упускаю.
Я пытаюсь заставить свой каскадный выпадающий список работать в шаблоне редактирования сетки видаполя.Я создал их в моем подробном представлении о вставке, все прекрасно работает.
MySetup В основном у меня есть веб-метод, который имеет 2 функции getRooms и getJacks, которые должны получать данные из 2 наборов данных, которые ясоздали. Наборы данных получают свои данные из пары SQLSTOREDPROCEDURES.
Мой выпадающий список страниц aspx и AjaxCDDL выглядит так
<EditItemTemplate>
<asp:DropDownList ID="ddlgvRooms" runat="server"
SelectedValue='<%# Bind("intRoom") %>'>
</asp:DropDownList> <asp:CascadingDropDownID="ddlgvRooms_CascadingDropDown"
runat="server"
Enabled="True"
TargetControlID="ddlgvRooms"
Category="Jack"
ServiceMethod = "GetRooms"
ServicePath = "CascadingDropDownRooms.asmx"
LoadingText = "[Loading Rooms...]"
PromptText="Please Select Room">
</asp:CascadingDropDown>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblgvRoom" runat="server" Text='<%# Eval("intRoom") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="JackNumber" SortExpression="intJack">
<EditItemTemplate>
<asp:DropDownList ID="ddlgvJacks" runat="server"
Height="20px" Width="125px">
</asp:DropDownList>
<asp:CascadingDropDown ID="ddlgvJack_CascadingDropDown"
runat="server"
Enabled="True"
Category="Jack"
ServiceMethod="GetJacks"
ServicePath="CascadingDropDownRooms.asmx"
TargetControlID="ddlgvJacks"
ParentControlID="ddlgvRooms"
LoadingText="[Loading Jacks...]"
PromptValue="Please Select A Jack">
</asp:CascadingDropDown>
</EditItemTemplate>
<WebMethod()> _
Public Function GetRooms(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Dim roomAdapter As New dsRoomsTableAdapters.roomlistTableAdapter()
Dim roomValues As New List(Of CascadingDropDownNameValue)()
For Each row As DataRow In roomAdapter.GetAllRooms()
roomValues.Add(New CascadingDropDownNameValue(row("RoomName").ToString(), row("intRoom").ToString()))
Next
Return roomValues.ToArray()
End Function
<WebMethod()> _
Public Function GetJacks(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Dim kv As StringDictionary = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)
Dim jackid As Integer
If ((Not kv.ContainsKey("Jack")) Or (Not Int32.TryParse(kv("Jack"), jackid))) Then
Return Nothing
End If
Dim jackAdapter As New dsRoomJacksTableAdapters.jacklistTableAdapter()
Dim jackValues As New List(Of CascadingDropDownNameValue)()
For Each row As DataRow In jackAdapter.GetJacksByRoomId(jackid)
jackValues.Add(New CascadingDropDownNameValue(row("JackNumber").ToString(), row("intJack").ToString()))
Next
Return jackValues.ToArray()
End Function