2012-02-28 2 views
2

Page, 은 ObjectDataSource이고, SelectMethodDropDownList입니다. SelectMethod은 여러 가지 ID가 포함 된 문자열 배열을 가져 오지만 데이터를 필터링하는 데는 DropDownList의 경우 DataSource이 필요합니다. 아아, null이 (가) 있으므로 안에 DropDownList을 입력 할 수 없습니다. 아이디어는이 string[]Session -Variable에 바인드하는 것이지만 모든 Page_Load에 다시 설정하거나 다른 모든 페이지에서 Session에서 제거해야합니다. 데이터베이스가 변경되었습니다.ASP.NET 컨트롤 가시성 딜레마

내가 찾고 Page_Load 모두 볼 수 있습니다 변수의 일종이며, 내 ObjectDataSourceSelectMethod,하지만 (바람직하지 않고 내 웹 응용 프로그램에 다른 페이지로 즉, (페이지를 떠나 이동에 자신을 제거) 다른 모든 페이지에 메소드를 호출 할 필요.

난 당신이 내 문제를 이해할 수 있기를 바랍니다.

감사합니다,

데니스

+0

Viewstate? –

+0

그래서 select 메소드는 GridView에 대한 데이터와 DropDownList에 대한 데이터를 동시에 선택합니까? 그건 맞지 않아. – Stilgar

+0

아니요, 아니요.그것은 GridView에 대한 데이터를 선택합니다. DropDownList의 DataSource가되도록 Select 메서드 (GridView에 대해 반환하는 DataTable의 항목을 필터링하는 데 사용됨) 내에서 가져 오는 문자열 배열을 원합니다. –

답변

1

를 I U으로 별도의 왕복이 발생하는 성능 적중에서 문자열 배열을 가져올 필요성을 알립니다. 이 문제를 해결하기 위해 개체 데이터 원본을 제공 할 별도의 개체를 만들 수 있습니다. 이 객체에는 문자열 배열을 가져 오는 방법과 그리드에 대한 데이터를 가져 오는 방법 두 가지가 있습니다 (예 : select 메서드)

다음과 같은 객체를 페이지에 넣고 게으른 태도. 오브젝트가 데이터를 호출하면 필드의 다른 부분을 저장합니다. 그런 다음 ObjectDataSource를

protected void odsSomething_ObjectCreating(object sender, ObjectDataSourceEventArgs e) 
{ 
    e.ObjectInstance = YourInsntanceAlreadyInThePage; 
} 

에 페이지에 당신은 왕복을 피할이 방법을이 개체를 전달하기 위해 ObjectDataSource를 ObjectCreating 이벤트를 사용할 수 있습니다.

동시에 두 호출을 수행 할 수 있도록 비동기 클라이언트 호출을 사용하여 두 개의 웹 서비스 호출을 동시에 수행하는 것이 좋습니다. 이것이 가능한 경우 로직의 흐름에 따라 달라집니다.

1

내가 찾고 Page_ Load 모두 볼 수 있습니다 변수의 일종이며, 내 ObjectDataSourceSelectMethod,하지만 내 웹 -에 다른 페이지로 즉, (페이지를 떠나 이동에 자신을 제거 (바람직하게는 다른 모든 페이지에 메소드를 호출하지 않고) 응용 프로그램. 비슷한 상황에서

, 나는 그것이 IDictionary (제네릭이 아닌)입니다. 현재 HttpContextItems 속성을 사용했습니다, 그래서 수용 할 수 임의 object은 임의의 object으로 입력되며 수명은 정확하게 현재 요청의 지속 기간이므로 요청이 끝나 자마자 사라집니다. 사용하려면 :

// Where you first get the data 
HttpContext.Current.Items["SomeKey"] = new [] { "string1", "string2" }; 

// Where you want to to use the data 
var strings = (string[])HttpContext.Current.Items["SomeKey"];