2013-03-07 1 views
1

내 리피터의 링크 버튼을 클릭하고 일부 조건을 통과 할 때마다 javascript 확인 ​​상자를 표시하려고합니다.Javascript ConfirmBox가 업데이트 패널에서 호출 될 때 표시되지 않습니다.

내 리피터는 Ajax 아코디언 컨텐츠 템플릿 안에있는 업데이트 패널 내에 있습니다. 나는 몇 가지 코드 솔루션을 검토 한 결과

Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');"); 

,하지만 여전히 작동하지 않습니다 :

<Accordion><UpdatePanel><Repeater>this is where the link button is</Repeater></UpdatePanel></Accordion> 

여기 내 코드입니다, 나는 Repeater_ItemCommand 방법 안에 넣어. 내가 뭘 잘못 했니?

UPDATE :

내가 HTML에서 자바 스크립트를 호출 할 경우

. 그것은 잘 작동합니다. 코드 :

<asp:LinkButton ID="lbDelete" runat="server" OnClientClick="return confirm('Are you sure want to delete?');">Delete</asp:LinkButton> 

하지만 난 여전히 못할

+0

에 대한 자세한 정보를 찾을 수 있습니까? 포스트 백 메소드에서? –

+0

@ Jeremy Thompson - 중계기 항목 명령 방법에서 – ricojohari

+1

이상한 일이 이상하게 나는이 방법으로 작동 할 것이라고 생각하지 않는다 !! –

답변

1

Repeater_ItemDataBound 이벤트를 사용하여이를 달성 할 수 있습니다. 컨트롤이 바인딩 될 때 javascript를 button/linkbutton으로 등록하면됩니다. 코드 블록을 다음 당신에게 거친 아이디어

protected void rpt_ItemDataBound(object source, RepeaterCommandEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType== ListItemType.AlternatingItem) 
     { 
      LinkButton btn = (LinkButton)e.Item.FindControl("btnDelete"); 
      btn.Attributes.Add("onclick", "if (! confirm('Delete this record?')) return false; "); 

     } 
    } 

컨트롤은 아약스 아코디언 패널에있는 경우에도 작동을 줄 것이다.

이렇게하면 스크립트가 항목 템플릿의 각 링크 버튼 항목에 바인딩됩니다. 이 코드는 Item 또는 AlternatingItem 행을 찾고 FindControl 메서드를 사용하여 btnDelete 컨트롤을 찾은 다음 onclick 특성을 특성 컬렉션에 추가합니다. 결과는 사용자가 Delete LinkButton을 클릭하면 확인/취소 대화 상자가 나타나 삭제를 확인합니다.

당신은 코드 행이 동일하여 다음 참조 링크

Reference

+0

마침내이 작품은 나를 위해. 감사합니다 – ricojohari

+0

@ricojohari 내 기쁨 – Devjosh

1

뒤에 코드에서 호출 (true로 설정 네 번째 매개 변수)이 시도 :

Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');", true); 
+0

여전히 작동하지 않습니다. 내 중계기가 아약스 아코디언 컨트롤 안에 있기 때문에 그렇습니까? – ricojohari

+0

어디에서이 'RegisterStartupScript'를 호출합니까? 편집 N/M, 그냥 위의 귀하의 의견을 보았다 ... –

1

이 시도 :

page.RegisterStartupScript(this, this.GetType(), "confirmDelete", "return confirm('confirm?\.');", true); 

확인 : http://forums.asp.net/t/1363887.aspx

+0

여전히 작동하지 않습니다. 고마워요 비록 – ricojohari

+0

내가 근래에 code.plz를 업데이트하려고합니다. – Amrendra

+0

내 코드를 사용해 보시겠습니까 ?? –

2

ScriptManager.RegisterStartupScript(this, typeof(string), "ConfirmDelete", 
    "return confirm('Are You Sure Want To Delete?');", true); 

편집보십시오 :이

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function ShowConfirmation() { 
      if (confirm("Are You Sure Want To Delete?") == true) { 
       //Calling the server side code after confirmation from the user 
       alert("Deleted"); 
      } 
     } 
    </script> 

서버 측 C# 코드

를 추가

샘플 클라이언트 측에 대한을

Page.ClientScript.RegisterStartupScript(this.GetType(), "showAl", "ShowConfirmation();", true); 
+0

늦게 회신 해 주셔서 진심으로 감사드립니다. 하지만 여전히 해결책이 작동하지 않았습니다. ( – ricojohari

+0

내 편집 코드 만 사용하십시오. 내게 맞습니다. –

+0

예, 편집 된 코드 만 사용하고 있습니다. 다시 시도했지만 여전히 작동하지 않았습니다. – ricojohari

1

사용 this 샘플

string sJs = "function ConfirmDelete() { return confirm("Are you sure?"); } 
     Page.ClientScript.RegisterClientScriptBlock(GetType(), "jscode", sJs, true); 
1

귀하의 리피터에 JS를 두어야 이런 식으로.

<asp:Repeater runat="server" ID="rep"> 
    <ItemTemplate> 
     <asp:Button runat="server" ID="btnDelete" CommandName="ConfirmDelete" OnClientClick="return confirm('Are You Sure Want To Delete?');" /> 
    </ItemTemplate> 
</asp:Repeater> 

또한, 데이터 바인딩하는 동안, 당신은 당신의 리피터의 항목 명령, 삭제 어느 알 수 있도록 버튼의 CommandArgument 속성에 ID를 설정해야합니다.

+0

그래, 이걸로 잘 할 수 있지만 문제는 내가 뒤에있는 코드에서 자바 스크립트를 호출하고 싶습니다. 거기에 어떤 방법으로 그것을 달성 할 수 있습니까? – ricojohari

+0

제가 이해하려고 ... Logged 1. 사용자가 삭제 버튼을 클릭하고 페이지를 다시 게시 2. 코드 숨김은 고객에게 확인 버튼을 보냅니다 3. 사용자가 확인 버튼을 클릭하고 페이지를 다시 게시합니다 4. 코드 숨김으로 레코드가 삭제됩니다 맞습니까 –

+0

예 하지만 확인 단추가 사용자에게 표시되기 전에 사용자가 레코드를 삭제할 수있는 권한이 있는지 확인하고 싶습니다. 사용자에게 권한이 없으면 확인 상자가 표시되지 않습니다. – ricojohari

관련 문제