2011-10-06 2 views
1

나는 이것을 구현하는 방법을 둘러 보았다. 여기에 내가 무엇을의 의사 표현은 다음과 같습니다asp.net 코드의 조건부 확인 프롬프트

bool hasData = ItemHasData(itemid); 
Confirm = "false"; // hidden variable 

if (hasData) 
{ 
    //Code to call confirm(message) returns "true" or "false" 
    if (Confirm == "true") 
    { 
     //Delete item 
    } 
    else if (Confirm == "false") 
    { 
     return; 
    } 
} 

확인이 ASP를 사용하는 호출 코드 : Literal 컨트롤을하고 확인 동일한 설정합니다. 함수를 종료 한 후에 만 ​​팝업을 얻을 수 있습니다. 그리고 그것은 그 이후의 조건들과 아무런 관계가 없습니다.

일반적인 합의는 특정 줄에서 자바 스크립트를 호출하는 것이 불가능하다는 것입니다 (서버 측/클라이언트 측 갭 때문에 의미가 있음). 그러나 이것을 어떻게 할 수 있습니까? ASP.NET AJAX Toolkit에서 ConfirmButtonExtender를 사용했지만 객체가 runat = "server"로 설정된 경우 코드에서 confirmbuttonextender 객체와 상호 작용할 수 없었습니다.

편집 :

미안 해요, 난 그 맛있는 가벼운 음식을 그리워했다. 고마워요 이카루스.

컨트롤 자체는 GridView입니다 (가상 버전은 실제로 gvData_RowCommand 함수에서 제공)의 rowcommand입니다. 첫 번째 검사는 CommandName이 DeleteItem인지 확인한 후이를 확인합니다.

gvData의 열은 필요한 정보가 다른 여러 항목에 대해 작업중인 표로 전달 된 헤더 (및 데이터 집합) 목록을 기반으로 설정됩니다. gvData의 데이터가 있습니다. 데이터가있을 때 항목을 삭제할지 묻는 Yes/No (실제로는 Ok/Cancel이 될 것입니다) 대화 상자가 필요합니다.

+1

어떤 종류의 컨트롤이 무엇인지 알지 못하고 샘플 코드를 제공하기가 어려우며 데이터를 바인딩하는 방법이 무엇입니까? – Icarus

+1

예를 들어 다른 방법을 사용하지 않고 있습니다. [ModalPopup] (http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/modalpopup/modalpopup.aspx)을 코드 박스 숨김 ('Show')에서 보이게 만들고, 함수를 종료하고, 팝업 이벤트를 처리하고 사용자가 선택한 항목에 따라 필요합니다. –

답변

3

일부 상황에서 사용하는 한 가지 방법은 확인/취소 버튼이 표시된 패널을 사용하는 것입니다. 따라서 JavaScript 이벤트를 처리 할 필요가 없으며 ASP.NET을 완전히 사용합니다.

<asp:Panel ID="pDeleteConfirm" runat="server" 
    CssClass="AlertDialog" 
    Visible="False"> 
    <p>Do you wish to delete the selected record?<br /> 
    <asp:Button ID="btDeleteYes" runat="server" OnClick="btDelete_Click" Text="Delete" /> 
    <asp:Button ID="btDeleteNo" runat="server" OnClick="btDelete_Click" Text="Cancel" /> 
    </p> 
</asp:Panel> 

<asp:GridView ID="gvData" runat="server" 
    AutoGenerateColumns="False" 
    CssClass="GridView" 
    DataKeyNames="ID" 
    DataSourceID="sqlData" 
    EmptyDataText="There is no data entered in the system." 
    OnRowDeleting="gvData_RowDeleting"> 
    ...... 
</asp:GridView> 

나는 패널

protected void gvData_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    // Show confirmation dialog 
    pDeleteConfirm.Visible = true; 

    // Select the row to delete 
    gvData.SelectedIndex = e.RowIndex; 

    // Cancel the delete so the user can use the confirm box 
    e.Cancel = true; 
} 

이 자바 스크립트가 아니라 당신이해야 할 몇 가지 UpdatePanel들에 추가 할 수있는 버튼을 Click 이벤트

protected void btDelete_Click(object sender, EventArgs e) 
{ 
    Button bt = (Button)sender; 
    switch (bt.ID) 
    { 
     case "btDeleteYes": // they confirmed a delete 
      sqlData.Delete(); 
      break; 

     case "btDeleteNo": // they clicked cancel 
      // Do nothing 
      break; 

     default: 
      throw new Exception("Unknow button click in btDelete_Click"); 
    } 
    // clear selection and hide the confirm box 
    gvData.SelectedIndex = -1; 
    pDeleteConfirm.Visible = false; 
} 

핸들을 보여주기 위해 OnRowDeleting 이벤트를 사용 AJAX가 작동합니다.

JavaScript 처리보다는 ASP.NET을 통해 수행하는 한 가지 방법.

+0

나는 이것을 구현하려고 노력하고있다. 그러나 이것은 끝내야 할 길인 것처럼 보인다. 제대로 처리 할 수 ​​있으면 올바르게 표시됩니다. – Robert

1

코드 숨김 작업은 HTML을 브라우저로 렌더링하는 것입니다. 이 작업을 수행하면 소켓이 닫히고 서버 측 코드가 더 이상 실행되지 않습니다.

클라이언트 측에서 Javascript 함수를 사용하여이 논리를 구현해야합니다.

특정 작업을 수행하기 전에로드 된 데이터가있는 경우 사용자에게 경고하려고합니까? 아니면 페이지를 떠나기 전에 어쩌면? 페이지에서 해당 작업이 발생하면 스크립트를 사용하여 경고를 팝업해야합니다.