페이지 당 사용자 세션 당 변수를 저장하는 방법
-
10-12-2019 - |
문제
3 개의 웹 파트를 사용하고 있습니다.WebPart A는 사용자가 WebPart A에서 버튼을 클릭 할 때 값을 만듭니다. WebPart B이 값을 사용하여 사용자가 선택할 수있는 항목이있는 목록을 만듭니다.WebPart C는 두 값을 모두 사용하여 테스트 목적으로 문자열을 만듭니다.
WebPart B이 목록을 사용하여 DropDownBox를 채 웁니다.SelectedValue가 변경 될 때마다 WebPart C를 업데이트해야합니다. 이것은 컨트롤의 선언입니다.
_documentTypeList = new DropDownList();
_documentTypeList.AutoPostBack = true;
this.Controls.Add(_documentTypeList);
.
여기서는 문제가 를 사용하는 것입니다.
_documentTypeList.AutoPostBack = true;
.
완전한 페이지를 다시로드하고 WebPart A의 값을 null로 재설정합니다.WebPart A의 가치를 잃지 않고 WebPart C에 WebPart C에 새 값을 보내는 방법은 무엇입니까?이 모든 것은 1 페이지에서 발생합니다.
해결책
세션 저장 상태 변수를 사용하여 수행 할 수 있습니다.
public string Name
{
get
{
return Page.Session["SaveName"] as string;
}
set
{
Page.Session["SaveName"] = value;
}
}
.
이것은 세션 상태에서 저장 / 가져 오는 getter / setter
이를 사용하려면 다음을 수행하십시오.
이것은 세션 상태의 값을 가져옵니다 (SESORE 상태 변수를 보려면 onPRerender 이벤트가 필요합니다)
txtName.Text = Name;
.
이 세션 상태로 설정 (세션 상태에 저장할 위치가 될 수 있음)
Name = txtName.Text;
.
int valuse :
cahnge public string Name
to public int Name
및 bool 값 ect와 같은 다른 항목에 대해서도됩니다.
int : 에 대해이 것처럼 보입니다.
public int Name
{
get
{
return Page.Session["SaveName"] as int;
}
set
{
Page.Session["SaveName"] = value;
}
}
.
다른 사람들이 WebPart간에 전달 될 데이터에 대해 언급했듯이 Iinterface 메소드를 사용해야합니다.
웹 파트 간의 연결 인 데이터 (해당 데이터를 사용하는 WebPart를 사용하는 WebPart를 사용하는 WebPart) 소비자 (WebPart 전송)를 제공합니다.
위의 것은 100 % 작업을 수행하고 포스트 백에 대한 값을 저장합니다.)
만 필요로합니다.) IV는 아래의 연결에 대한 몇 가지 링크를 게시했습니다.
연결 가능한 WebPart 문제 .................. ....?
및
도움이되기를 바랍니다 :)
다른 팁
if (!Page.IsPostBack) { your code here }
를 시도 했습니까?
사용자 정의 웹 파트 연결을 목적으로 만들었습니까?귀하의 요구 사항을 거치는 것은 가장 적절한 옵션이 될 수 있습니다
이전에 다음 순서로 연결된 웹 파트입니다.
WebPart A => WebPart B
WebPart B => WebPart C
WebPart A => WebPart C
.
WebPart B에서 값을 변경했을 때 WebPart C에서 두 값을 모두 호출하고 싶으면 오류가 발생했습니다. 언제든지 페이지를 다시로드하고 WebPart A를 다시로드해야합니다. 페이지 상호 작용 및 페이지로드가 아닌 값이 생성되는 값은 손실되었습니다. WebPart B 및 WebPart C는 WebPart A의 가치없이 기능을 압류했습니다. 위에서 설명한대로 WebPart 연결을 유지하려면 거의 SharePointMaster의 답변을 확인하십시오.
My Case WebPart A는 고유 한 로그인 토큰을 생성하기 때문에 오히려 페이지에 저장하지 않을 것입니다. 나는 웹 파트를 가지고있는 것을 선호하는 것을 선호합니다. 그렇게하려면 나는 그들 사이의 연결을 바꿨다. 대신 위의 연결은 다음과 같은 연결을 사용했습니다.
WebPart A => WebPart B => WebPart C
.
WebPart B는 WebPart A의 값을 저장하고 자신의 가치와 함께 WebPart C로 제공합니다. 이것은 WebParts B 인터페이스가 현재 어떻게 보이는지입니다.
public interface IWebPartB
{
string webPartAValue { get; }
string webPartBValue { get; }
}
.