그래서 내가이가 읽을 수있는 모든 것을에서이 오류데이터 바인딩은 인덱스가
{"'drpButton1' has a SelectedValue which is invalid because it does not exist in the list of items.\r\nParameter name: value"}
을 얻고 선택하지 않은 경우에도 예외가 발생하기 때문에 DropDownList로하거나 기존 항목을했다거나 선택된 인덱스 값이 있던 새로운 데이터 바인딩 된 항목에 없습니다.
하지만 개체에 기존 항목이 없다는 것을 보증 할 수 있으며 범위를 벗어날 수있는 인덱스가 선택되지 않았다고 확신 할 수 있습니다.
다음은 .Databind() 호출 바로 전에 DropDownList 개체가 어떻게 생겼는지입니다.
여기 직접 모든 폭발을 초래 한 데이터 바인딩() 호출 이후.
내 목록 개체는 7 개의 항목을 포함하며 특히 databind 메서드가 임의로 선택하는 항목을 포함합니다.
하지만 여기 키커가 있습니다. 정확히 같은 데이터가있는 8 개의 드롭 다운을 채우고 첫 번째 드롭 다운에서 올바르게 작동합니다. 왜 두 번째 폭발하는지 모르겠다.
편집 :
여기부하 방법에서 미리보기입니다 : 여기에 바인딩을 수행하는 코드입니다. 첫 번째 호출이 성공하면 두 번째 호출은 실패하지만 항상 실패하지는 않습니다.
private void LoadShortCodeDropDownData()
{
// Initilization junk to get the resultList to use.
base.LoadListDropDown(drpButton0, (IList)resultList, "DeviceShortCodeIndexID", "DeviceShortCodeName", select);
MessageTextEnabled(drpButton0);
base.LoadListDropDown(drpButton1, (IList)resultList, "DeviceShortCodeIndexID", "DeviceShortCodeName", select);
MessageTextEnabled(drpButton1);
}
protected void LoadListDropDown(DropDownList dropDown, IList list, string valueField, string textField, string insertItem)
{
LoadListDropDown(dropDown, list, valueField, textField);
//dropDown.Items.Insert(0, new ListItem(insertItem, ""));
}
protected void LoadListDropDown(DropDownList dropDown, IList list, string valueField, string textField)
{
dropDown.DataSource = list;
dropDown.DataValueField = valueField;
dropDown.DataTextField = textField;
dropDown.DataBind();
}
EDIT2 : 난 내가 여기가 진짜 문제는 어떻게 데이터 바인딩 따기있는 항목을 선택하는 것입니다 생각? 데이터를 가져 오는 첫 번째 드롭 다운 목록에서 첫 번째 값을 임의로 선택하는 동안 두 번째 목록에 어떤 마지막 이유로 바인딩 할 시도하는 것으로 나타났습니다.
실제 코드를 게시 할 수 있습니까? –
'.DataBind()'를 수행하는 코드를 추가 할 수 있습니까? –
'dropDown.SelectedValue = null;을 설정하려고합니다. 데이터 소스 값을 할당하기 전에 dropDown.Items.Clear(); 자세한 내용을 확인하십시오 - https://connect.microsoft.com/VisualStudio/feedback/details/666808/asp-net-dropdownlist-selectedvalue-is-persisted-which-results-in-exception-if-the-control- is-databound-second-time –