2011-03-09 7 views
1

나는 여러 페이지를 연결하여 드롭 다운 선택 항목을 유지하려고합니다. 세션 값 등으로이 작업을 수행하는 여러 가지 방법을 보았지만 다른 값을 선택할 수있는 옵션을 유지하면서 기본값을 설정하려고합니다.어떻게 변수를 기반으로 드롭 다운 목록의 기본값을 설정할 수 있습니까?

효과적으로 사용자는 1 페이지를 선택한 다음 2 페이지에서 동일한 선택 항목을 사용하지만 잠재적으로 선택 항목을 변경하려고합니다. 내 생각에 1 페이지에서 SQL의 테이블에 선택 항목을로드 한 다음 2 페이지에서 해당 테이블을 호출하고 값을 변수로 설정할 수 있다고 생각했습니다. 내 질문은 설정 값과는 달리 기본 드롭 다운 값을 변수로 설정하는 방법입니다.

Visual Studio2010을 C#을 사용하여 ASP Webforms와 함께 사용하고 있습니다.

도움이나 의견을 보내 주시면 감사하겠습니다.

답변

1

나는 분명히 그것을위한 테이블을 사용하지 않을 것이다. 세션을 사용하는 첫 번째 추측은 아마 맞을 것입니다. 그것은 것 같다 당신은 그러나, 세션 값을 변경할 수 없습니다 인상 ...

페이지가 당신이 좋아 똑같이 작동합니다 가지고있는 것처럼 :

1 페이지의 사용자 선택 항목을 가지고, 다음 해당 저장을 세션의 값. 2 페이지에서 세션의 값을 드롭 다운 목록의 기본값으로 설정하십시오. 선택을 변경하면 세션 변수를 새 값으로 간단히 업데이트하십시오. 그런 다음 무한 반복을 할 수 있습니다.

EDIT : 두 번째 예에서

DropDownList1.SelectedIndex = (int?)Session["DropDownValue1"] ?? 0;

?? : 드롭 다운 기본 valuie 설정

Session["DropDownValue1"] = DropDownList1.SelectedIndex;

: 세션 변수를 설정 로서는,

널 통합 연산자입니다. 즉, 객체가 null 인 경우 객체가 null 인 경우 대신 그 객체를 사용합니다.

당신은 그럼 당신은 당신이 좋아하는 경우 사용자가이를 변경하면, 두 번째 페이지에 세션 변수를 업데이트하기 위해 OnSelectedIndexChanged 이벤트를 가질 수있는 파일 *.cs

뒤에 코드 - 더에 그 예를 모두 사용합니다.

*.aspx 파일에 DropDownList로이 속성을 추가 OnSelectedIndexChanged="Index_Changed"

를 이벤트 핸들러 코드를 사용하여 코드 숨김 *.cs 파일 :

void Index_Changed(Object sender, EventArgs e) { 

    Session["DropDownValue1"] = DropDownList1.SelectedIndex; 
} 
+0

@ BinaryTox1n - 저는 ASP.Net을 처음 접했습니다. 나에게 코드 예제를 제공 할 수 있습니까? (특히 세션 값을 선언하고 기본값으로 호출) 어떤 파일이 들어 왔는지 알려주시겠습니까 (aspx, 코드 숨김)? 빠른 답변을 보내 주셔서 감사합니다. – Kate

+0

@Kate 몇 가지 예를 제공하기 위해 답변을 업데이트했습니다. 뭔가 명확하지 않은 경우 알려주십시오. – BinaryTox1n

+0

@ BinaryTox1n - 예제를 가져 주셔서 감사합니다! 몇 가지 간단한 질문 : selectedindex와 selectedvalue의 차이점은 무엇입니까? 또한 페이지 1과 페이지 2 모두에 기본값을 설정하는 코드를 두 페이지에서 모두 업데이트 할 예정입니까? 또한 .cs 파일에서 설정 기본값 코드는 어디로 이동합니까? page_load에 넣으려고했는데 오류가 발생했습니다. 그것을 넣을 다른 사건이 있습니까? 다시 한 번 감사드립니다! – Kate

0

이 데이터베이스 작업,하지만 당신은 또한 사용할 수 있습니다 쿠키 또는 세션. 당신이해야 할 일은 드롭 다운리스트 selectionchanged 이벤트에, 그 값을 세션에 저장하는 것입니다 (예를 들어). 그런 다음 두 번째 페이지의 page_load 이벤트가 발생하면 해당 세션 값을 읽습니다.

드롭 다운 목록의 경우 개체 또는 상수/값에서 선택한 값을 설정할 수 있습니다.

string myVal = Session["listChoice"]; 
lstChoices.SelectedValue = myVal; 
+0

@ 티아민 - 빠른 응답에 감사드립니다! 두 번째 페이지의 코드에 코드가 표시됩니까? 처음에 세션 변수를 어떻게 선언합니까? 드롭 다운에서 선택 사항을 변경하면 이러한 변경 사항이 적용됩니까? 감사! – Kate

+0

@Kate - 그냥 개체를 저장하여 세션 상태를 설정합니다. 따라서 첫 번째 페이지에서 'Session [ "myKeyName"] = lstDropDown.SelectedValue; '코드 숨김 페이지에서, 그리고 내가 이전에 두 번째 페이지에서 쓴 것. 사용하는 키는 사용자가 결정하므로 드롭 다운 이름에 따라 변경되지 않습니다. – Thyamine

+0

@ 티아민 - 'Session [ "PAG"] = DdlPAG.SelectedValue;' 페이지 1의 내 page_load 및 페이지에서 값을 저장하는 경우 if (Session [ "PAG"]! = null {DDPP.SelectedValue = Session [ "PAG"] .ToString();} ' 1 페이지에서 2 페이지로 이동하지만 2 페이지에서 선택 항목을 변경하려고하면 다시 세션 변수로 전환됩니다 .2 페이지에서 선택 항목을 덮어 쓰고 세션 변수를 변경하는 방법이 있습니까? – Kate

0

그냥 Session의 기간 동안 지속 할 경우, 당신은 그것에게 Session를 저장할 수 있습니다. 쿠키를 오래 사용하려면 쿠키를 사용하거나 데이터베이스에 저장해야합니다.

당신이 처음로드 할 때 DropDownList 당신이 저장된 기본을 찾아서 값을 기본합니다 있는지 확인 : 다음 사용자가 값을 선택

// Initialize the DDL then check for the default value 
if (Session["DDL1Default"] != null) 
{ 
    ddl1.SelectedValue = Session["DDL1Default"].ToString(); 
} 

하고 당신이 그것을 저장해야 탐색 :

// in some navigate event 
Session["DDL1Default"] = ddl1.SelectedValue; 
+0

이것은 1 페이지에서 2 페이지로 값을 저장하는 작업이지만 2 페이지에서 선택 사항을 변경하면 어떻게 새 세션 값으로 업데이트 할 수 있습니까? 감사! – Kate

+0

@Kate 원래와 같은 방법으로 저장하십시오. 'DropDownList' 값을 꺼내서 저장하십시오 :'Session [ "DDL2Default"] = ddl2.SelectedValue;'Session'은 단지 컨테이너 일 뿐이며 어떤 페이지 이벤트에서도 읽고 쓸 수 있습니다. – Kelsey

+0

시도 할 때 실제로 선택한 것보다 드롭 다운 목록의 첫 행에 기본값이 설정됩니다. – Kate

0

여전히 세션 변수를 사용할 수 있습니다.

myDropDownList.SelectedValue = Session["myDropDownValue"].ToString(); 


편집 물론
다음 Page_Load에서
는 목록의 SelectedValue 드롭 다운을 설정합니다. myDropDownList_OnSelectedChange() 이벤트 처리기의 변수를 업데이트하기 만하면됩니다. Page_Load에있는 1 페이지의 값을 설정하는 곳의 다른 코드를 if(!IsPostBack)에 두어 드롭 다운 목록이 업데이트되지 않도록해야합니다.

+0

2 페이지에서 세션 변수를 변경하고 업데이트 할 수 있습니까? 지금은 한 방향으로 만 작동하지만 두 페이지 중 하나에서 선택을 변경할 수 있어야합니다. 감사! – Kate

+0

위의 수정 내용을 참조하십시오. – Marcus

0

감사합니다. 모두들! 이제 작동 중입니다. 를 Page_Load 섹션에

1 페이지와 2 페이지 코드 숨김 : 경우 다른 사람이에 실행에서, 여기에 내가 함께 결국 무엇

 if (!Page.IsPostBack) { 
      if (Session["PAG"] != null) { 
       DdlPAG.SelectedValue = Session["PAG"].ToString(); } } 
     Session["PAG"] = DdlPAG.SelectedValue; 

감사를 다시!

관련 문제