2010-06-20 2 views
0

를 찾기 내가 데이터 소스 내가 몇 DataTextFields이 내 선택 클래스목록 <>을. (위임) 문제

Select selection = new Select(); 
RadComboBox1.DataSource = selection.GetAcctUtilCo(e.Text, 10).Skip(e.NumberOfItems); 

의 목록 <>는 다중 열 콤보 상자가 있습니다. 내 DataValueField입니다.
일단 계정을 선택하면 datatextfield 값을 사용하여 gridview의 일부 필드를 채울 수 있습니다.

내가 디버깅 할 때, 나는 인스턴스로 설정되지 않았습니다 개체 참조 '얻을

int AcctID = Convert.ToInt32(RadComboBox1.SelectedValue); // * 
List<Select> mylist = RadComboBox1.DataSource as List<Select>; 
mylist.Find(delegate(SelectTop act) { return act.AcctID == acctID; }); // ** exception here 
Label lblAcctNo = (Label)grdAccts.HeaderRow.FindControl("lblAcctNo"); 
lblAcctNo.Text = mylist.AccountNum; 

성공 :(없이 데이터를 retreive하는 .Find() AcctID에 의해 방법을 사용하는 것을 시도하고있다내가 가리킬 때 AcctID가 null이 아닙니다. 그러나 mylist 위로 마우스를 가져 가면 null이라고 말합니다. .Find 메소드로 새롭습니다. & 정말 잘 모르겠습니다. 문제가 그것 또는 데이터 소스를 사용하는 경우 f mylist 소스로서의 콤보 박스. 그것은 페이지 요청 사이에서 유지되지 않습니다 -
은 누군가가 나에게

답변

1

문제는 RadComboBox1.DataSource로 인해 발생 계몽 도와주세요 수 있습니다. RadComboBox1.DataSource을 설정하여 코드에서

  1. 은 viewstate가에 RadComboBox1.DataSource 값의 복사본을 저장합니다. 예. ViewState [ "RadComboBox1"] = RadComboBox1.DataSource;

  2. 위 코드를 실행하는 경우에는 viewstate에서 값을 읽어 RadComboBox1.DataSource를 복원하십시오. 예. RadComboBox1.DataSource = ViewState [ "RadComboBox1"];

바라는대로 값을 찾은 다음 요청간에 유지해야합니다. 행운을 빕니다!

+0

아직 작동하지 않습니다. 지금 나는 가지고있다 : RadComboBox1.DataSource = selection.GetAcctUtilCo (e.Text, 10) .Skip (e.NumberOfItems); ViewState [ "RadComboBox1"] = RadComboBox1.DataSource; RadComboBox1.DataBind(); 그런 다음 SelectedIndexChanged 이벤트에서 다음을 수행합니다. int pkAcct = Convert.ToInt32 (RadComboBox1.SelectedValue); 목록 ) ViewState [ "RadComboBox1"]; 리스트는 변수에 저장하는 ViewState에 상당에 저장되어, 기록 용 :(STILL 널 I는 '로서'이런 않고 시도 – sher1000

2

콤보 상자의 데이터 원본이 이 아니고입니다. "as"를 사용할 때 표준 유형과 같은 예외를 던지는 대신 유효하지 않은 유형으로 변환하려고하면 결과는 null입니다. Skip 함수를 사용하여 데이터 소스를 만들었으므로 실제로 "IEnumerable <>"이 있습니다.

+0

: 목록 ) (RadComboBox1.DataSource) – sher1000

+0

@ sher1000, 요점은 * 목록이 아님 * .2 가지 중 하나를 시도하십시오 1) 데이터 소스를 설정할 때'.Skip (...) '다음에'.ToList();를 호출하십시오. 2)'mylist'를 만들 때'List '을 사용하십시오. –

+1

또한 확장 방법이 있으므로 3.5를 처분 할 수 있습니다. Find 메소드를'.Find (act => act)와 같이 단순화 할 수 있습니다.AcctID == acctID); ' –

관련 문제