2010-08-11 4 views
0

.aspx 페이지의 모달 팝업을 사용하여 DB에 데이터를 추가하려고합니다.ASP.NET AJAX 팝업 페이지를 모달 창으로 표시

그래서 직원에 대한 SQL 테이블 데이터가있는 그리드가 있습니다. 사용자가 DB에 레코드를 추가 한 다음 그리드를 새로 고침하여 새 데이터를 표시 할 수있게하려면이 페이지의 단추 나 링크가 있어야합니다.

나는 사용자가 데이터를 입력하고 addEmployee.aspx 내의 db에 저장할 수있는 모달 창 (그리고 일부 사이트에서 볼 수있는 기본 페이지가 어두워 짐)에 팝업을 표시하는 addEmployee.aspx가 있습니다. 이 페이지에는이 작업을 위해 모든 SQL 및 유효성 검증 로직이 캡슐화되어 있습니다. 추가가 끝나면 팝업이 닫히고 기본 페이지에 메시지를 표시 한 다음 (예 : DB에서 데이터 그리드 정보를 새로 고침하여 새로운 기록했다.

사람이 그것을 얻기 위해 이리저리 주를 코딩 할 필요없이 이러한 유형의 기능을 얻을 수있는 방향으로 날 지점 수 있습니다. 당신이 더 나은 솔루션이있는 경우

, 내가 모든 귀를입니다!

감사합니다.

답변

1

addEmployee.aspx 기능을 사용자 정의 컨트롤에 캡슐화 할 수 있다면 이 사용자 정의 컨트롤 (addEmployee.ascx)을 그리드가있는 페이지로 이동합니다 (예 : viewEmployee.aspx)

그런 다음 모달 팝업 확장기 (ajax 컨트롤 툴킷을 사용하는 경우)를 사용하여이 addEmployee.ascx 컨트롤을 표시 할 수 있습니다 사용자는 종업원을 추가하기위한 대응하는 로직을 갖는 저장 버튼을 갖는다.

또한 ajax 제어 툴킷의 경우 updatepanels를 사용하는 경우 gridof의 항목 목록을 새로 고치는 listofEmployeeUpdatePanel.Update()를 수행합니다.

이것은 현재 현재 응용 프로그램에서 매우 유사한 사용 사례를 구현하는 방법입니다.

이 접근법의 단점은 다음과 같습니다. addEmployee.ascx 사용자 정의 컨트롤은 원본 페이지의 일부이며 사용 여부에 관계없이 크기에 추가됩니다.

0

당신의 경우에는 jquery facebox 플러그인을 사용하여 모달 팝업을 표시하거나 매우 유연하고 사용하기 쉬운 프로토 타입 javascript를 참조 할 수 있습니다.

facebox의 경우 facebox로 iframe을 모달 팝으로 표시 할 수 있습니다. 그래서 iframe에 링크를 넣을 수 있습니다. 대안으로, "facebox"는 멋진 GUI를 가진 "fancybox"입니다. 그것은 전에 그것을 사용했기 때문에 그것은 환상적으로 작동합니다.

희망이 도움이 될 것입니다.

+0

:

private void SubmitParentPage() { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "submitHiddenButton", "window.parent.submitHiddenButton();", true); } 

여기에 메인 페이지에 호출되는 자바 스크립트 함수가있다 : 영문는 그리드를 입력하고 업데이트 할 메인 페이지에게 코드를 추가 업데이트 패널을 통해 모달이 완료되면 미립자 격자를 새로 고칠 수 있습니까? 위험 탭을 클릭하고 특정 행의 위험 그리드에서 편집을 클릭하면 해당 위험 데이터를 편집 할 수있는 usercontrol의 팝업이 나타납니다. 완료되면 레코드를 삭제하거나 업데이트하고 팝업이 닫혔습니다. 위험도 데이터를 새로 고쳐야합니다. 업데이트 패널에서이를 수행 할 수 있습니까? 어떻게 이런 일이 일어날 것입니까? 나머지는 업데이트 될 예정입니다. 왜냐하면 오직 하나만 필요하기 때문에 모든 8 업데이트가 필요하지 않습니까? – kacalapy

+0

updatePanels를 사용하면 updatePanels가 모두 업데이트되지 않도록 UpdateMode = Conditional 및 ChildrenAsTriggers = false (UI 구성 방식 및 해당 업데이트 패널에 따라 다름)의 적절한 조합을 사용할 수 있습니다. UpdatePanel에 대한 updatePanelInstance.Update()를 호출하여 업데이트하려는 updatePanel 만 실제로 업데이트되었는지 확인할 수 있습니다. 업데이트 할 내용은 – InSane

+0

입니다.이 항목의 샘플 코드는 어디에서 볼 수 있습니까? 또한 모든 패널을 페이지와 함께로드하고 하나의 거대한 거대한 페이지를 만들지 않아도됩니까? 외부 페이지를 모달 창으로 가져 와서 각 항목을 UI와 로직을 구분할 수 있도록하는 것이 목표입니다. – kacalapy

0

귀하의 모달에 addEmployee.aspx를 가리키는 IFrame을 넣을 수 있습니다. 온,

protected void btnHidden_Click(object sender, EventArgs e) 
{ 
    //Hidden button was clicked. Update grid. 
} 

다음 : 그리드를 업데이트하는 코드를 포함해야하는, 심지어는 숨겨진 버튼에 Cick 추가

<div style="visibility: hidden; display: none;"> 
    <asp:Button ID="btnHidden" runat="server" /> 
</div> 

: 그럼, 같이, 메인 페이지에 숨겨진 버튼을 추가 addEmployee 내에서 "추가"클릭 이벤트.내부에 제 8 그리드의 각 포장 것

function submitHiddenButton() { 
    var btn = $get('<%= btnHidden.ClientID %>'); 
    btn.click(); 
}