2010-03-02 6 views
0

페이지의 FormView (SQLDataSource에서 가져온 데이터)의 값에 두 개의 레이블 텍스트를 설정하고 싶습니다.asp.net 레이블의 텍스트를 다른 컨트롤의 값으로 설정하는 방법은 무엇입니까?

가장 적합한 방법은 무엇입니까? FormView에 대한 DataView 이벤트를 사용하여 FormView의 필드 값으로 레이블 텍스트를 설정하거나 SQLDataSource Selected 이벤트를 사용하여 레이블을 쿼리에서 검색 한 값으로 설정하려고합니다. FormView와 함께 Page_Load 이벤트를 사용할 수 있습니까?

FormView는 두 값 중 하나만 표시하지만 다른 값은 SQLDataSource에서 검색합니다.

나는이 컨트롤 뒤에있는 데이터 구조에 액세스하는 것에 익숙하지 않지만 데이터가 거기에 있다는 것을 알기 때문에 동일한 SQL 쿼리를 두 번 실행하는 대신 사용할 수 있습니다.

내 질문에 어떤 이벤트를 사용합니까? 어떤 컨트롤에서 데이터에 액세스합니까? 그 컨트롤에서 데이터에 액세스하려면 어떻게해야합니까?

답변

3

나는 OnDataBound 이벤트를 사용하여 기본 데이터 소스에서 값을 얻을 것 :

lblExample.Text = ((DataRowView)((FormView)sender).DataItem)["fieldName"].ToString(); 

는 도움이되기를 바랍니다. // CeriQ

+0

내 질문을 한 후에 비슷한 해결책을 찾았습니다. Page_Load 이벤트를 사용하고 연결된 이벤트에서 보낸 사람이 아닌 FormView 컨트롤에 직접 액세스하려고했습니다. Page_Load 이벤트 컨텍스트에서 FormView.DataItem이 null을 반환하는 반면 디버거에는 실제로 DataRowView에 액세스하려는 데이터 – Matt

+0

걱정하지 마시고, 다음번에 다시로드 할 때 우연히 생긴 것처럼 보입니다. – Matt

+0

page_load에는 formview가 채워질 것이라고 보장 할 수 없습니다. OnDataBound 이벤트를 사용하면 데이터가 있거나 데이터가 변경 (다시 채워짐) 한 후에 만 ​​트리거됩니다. 송신자를 사용하지 않아도됩니다. (FormView) 발신자를 FormView 컨트롤의 ID로 교환 할 수 있습니다. –

0

그냥 레이블을 설정하려는 경우, 그냥 Page_Load 이벤트에 레이블을 설정 = "someValue와"

myLabel.Text;

+0

그러나 값을 얻는 방법 - FormView 컨트롤에서 검색 한 경우 표시되지 않은 값에 액세스 할 수 있습니까? SQLDataSource가 쿼리 결과를 액세스 할 수있는 데이터 구조에 저장합니까? – Matt

+0

FormView의 FindControl 메서드를 사용하여 값을 얻을 수 있습니다. – citronas

관련 문제