2013-05-03 4 views
0

나는 데이터베이스에서 데이터를 표시하는 표가 있고 확인란이있는 왼쪽에 사용자 지정 열이 있습니다. 삭제할 레코드를 선택하고 레코드를 삭제할 서버 쪽 이벤트를 트리거하는 드롭 다운 목록이 있습니다. 내가 그 레코드를 삭제하기 전에 확인 대화 상자를 보여주고 싶습니다. "괜찮습니까? 취소하고", 어떻게해야합니까? 어떤 생각?드롭 다운 목록에서 확인 대화 상자를 표시하는 방법은 무엇입니까?

나는이 작업을 수행합니다

if(ddlAction.SelectedValue == "Delete") 
{ 
    string id = string.Empty; 
    int i = 0; 
    List<int> idx = new List<int>(); 

    foreach (GridViewRow rowitem in gvDept.Rows) 
    { 
     CheckBox itemchk = (CheckBox)rowitem.FindControl("cbSelectOne"); 

     if (itemchk != null & itemchk.Checked) 
     { 
      id += rowitem.Cells[3].Text.ToString() + ','; 
       idx.Add(i); 
     } 

      i = i + 1; 
     } 

     id = id.Trim(",".ToCharArray()); 
     List<string> objRemoveKeys = id.Split(',').ToList(); 

     if (objRemoveKeys.Count > 0) 
     {  
     ddlAction.Attributes.Add("OnChange", "javascript:return confirmDeletion('Are you sure you would like to remove the selected items?');"); // this part not working. 

     AirAsiaLinqDataContext LinqDataCtx = new AirAsiaLinqDataContext(); 

     var record = from a in LinqDataCtx.departements 
         where objRemoveKeys.Contains(a.departementcode) 
         select a; 

     LinqDataCtx.departements.DeleteAllOnSubmit(record); 
     LinqDataCtx.SubmitChanges(); 


     for (int j = 0; j < idx.Count; j++) 
     { 
      gvDept.DeleteRow(idx[j]); 
     } 
    } 

    ddlAction.SelectedValue = ""; 

}

답변

0

을 시도합니다. 대화 상자는 클라이언트 측에서 발생합니다. 당신은 jQuery를 (또는 바닐라 자바 ​​스크립트 코드)로 비교적 쉽게 할, 또는 같은 것을 사용할 수있는 아약스 컨트롤 툴킷의 ConfirmButton : 당신은 또한 JuiceUI 갈 줄 수있는 과정을 통해 좀 더 제어를 위해

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ConfirmButton/ConfirmButton.aspx

: http://juiceui.com/controls/dialog

+0

안녕하세요, Tieson, 예, 그것은 내 C# 코드의 일부입니다. 저는 controlname.attribute.add ("") – NomNomNom

+0

@HendraLim을 사용하여 컨트롤에 클라이언트 측 이벤트를 추가 할 수 있다고 생각했습니다. 이론적으로는 작동하지만, 원본 페이지로드시 완료됩니다. 포스트 백에이를 추가하는 것은 모든 서버 측 프로세싱이기 때문에 아무런 도움이되지 않습니다. 전체 방법을 포함하지 않았기 때문에 어떤 것을하고 있는지 알기가 어렵습니다. 'SelectedValue'를 참조 했으므로 다시 게시 처리 인 것처럼 보입니다. –

+0

그래, 다시 게시 처리, 위의 모든 코드는 드롭 다운 목록 이벤트에, 글쎄 난 당신의 제안은 내가 가진 최고의 옵션, 많은 감사 Tieson 생각합니다. – NomNomNom

0

이 코드 숨김 (C#을) 코드처럼 보이는이

ddlAction.Attributes.Add("onchange", "return confirm('Are you sure you would like to remove the selected items?');"); 
+0

이 방식 ddlAction에 의해, 하나 작동하지 않는 것은 드롭 다운리스트 컨트롤입니다, 그것은 버튼 아니다 자바 스크립트 함수

. – NomNomNom

0

사용자는 확인을위한 경고를 표시 할뿐만 아니라 사용자가 일부 행을 선택했는지 여부를 확인해야합니다. 코드 아래 두 가지 모두를 수행합니다.

function checkIfSelected() { 
    if (yourGrid.GetSelectedRowCount() == 0) { 
     alert("You must select atleast one."); 
     return false; 
    } 
    else { 
     if (confirm("Are you sure you want to proceed?")) { // This is what you want 
     } 
     else { 
      return false; 
     } 
    } 
} 

당신의 드롭 다운리스트 :

<asp:DropDownList ID="ddlAction" onChange="javascript:if(checkIfSelected() == false){return false};" AutoPostBack="true" runat="server" OnSelectedIndexChanged="yourID_SelectedIndexChanged"> 
내가 한

+0

안녕하세요 tariq, 나는 클라이언트 인스턴스 이름이없는 일반 gridview를 사용하고 있기 때문에 firebug 콘솔에서 해본 적이있다. 자바 스크립트가 이름으로 그리드를 인식하고 GetSelectedRowCount 메소드를 호출 할 수 없다고는 생각하지 않는다. 게다가. devexpress 또는 다른 외부 구성 요소의 gridview를 사용하면이 방법이 유용 할 수 있습니다. – NomNomNom

+0

네, 그 사실을 알고 있습니다 만, 다른 행을 선택했는지 확인하기 위해 다른 방법을 사용할 수 있습니다. 하지만 드롭 다운 목록의 onchange() 이벤트를 통해 삭제 확인을 분명히 표시 할 수 있습니다. – tariq

관련 문제