2009-09-23 26 views
12

Vấn đề tôi đang gặp phải là khi có xác thực trên trang và tôi đang cố hiển thị cửa sổ bật lên, cửa sổ bật lên không được hiển thị. Và bằng cách sử dụng lỗi lửa tôi đã nhận thấy rằng một lỗi đang được ném.ModalPopupExtender và các vấn đề xác nhận

Nút được sử dụng để hiển thị cửa sổ bật lên đã khiến xác thực được đặt thành sai nên tôi bị kẹt vì những gì gây ra lỗi.

Tôi đã tạo một trang mẫu để tách biệt vấn đề mà tôi đang gặp phải, mọi trợ giúp sẽ được đánh giá cao.

Các Lỗi

function() {Array.remove(Page_ValidationSummaries, document.getElementById("ValidationSummary1"));}(function() {var fn = function() {AjaxControlToolkit.ModalPopupBehavior.invokeViaServer("mpeSelectClient", true);Sys.Application.remove_load(fn);};Sys.Application.add_load(fn);}) is not a function 
http://localhost:1131/WebForm1.aspx 
Line 136 

ASP

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CLIck10.WebForm1" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
     <div> 
      <asp:Button ID="btnPush" runat="server" Text="Push" CausesValidation="false" onclick="btnPush_Click" /> 
      <asp:TextBox ID="txtVal" runat="server" /> 
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtVal" ErrorMessage="RequiredFieldValidator" /> 
      <asp:ValidationSummary ID="ValidationSummary1" runat="server" /> 



     <asp:Panel ID="pnlSelectClient" Style="display: none" CssClass="box" runat="server"> 
     <asp:UpdatePanel ID="upnlSelectClient" runat="server"> 
      <ContentTemplate> 
       <asp:Button ID="btnOK" runat="server" UseSubmitBehavior="true" Text="OK" CausesValidation="false" OnClick="btnOK_Click" /> 
       <asp:Button ID="btnCancel" runat="server" Text="Cancel" CausesValidation="false" OnClick="btnCancel_Click" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
     </asp:Panel> 

     <input id="popupDummy" runat="server" style="display:none" /> 

     <ajaxToolkit:ModalPopupExtender ID="mpeSelectClient" runat="server" 
     TargetControlID="popupDummy" 
     PopupControlID="pnlSelectClient" 
     OkControlID="popupDummy" 
     BackgroundCssClass="modalBackground" 
     CancelControlID="btnCancel" 
     DropShadow="true" /> 
    </div> 
</form> 

Mã Đằng sau

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace CLIck10 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void btnOK_Click(object sender, EventArgs e) 
     { 
      mpeSelectClient.Hide(); 
     } 

     protected void btnCancel_Click(object sender, EventArgs e) 
     { 
      mpeSelectClient.Hide(); 
     } 

     protected void btnPush_Click(object sender, EventArgs e) 
     { 
      mpeSelectClient.Show(); 
     } 
    } 
} 
+0

Các trình xử lý nhấp chuột đó có trống không chỉ vì bạn chưa phải điền vào hoặc bạn yêu cầu đăng lại để ẩn cửa sổ bật lên phương thức? Nếu postback không cần thiết, hãy xem xét sử dụng các phương thức phía máy khách của phương thức popup để mở và đóng nó lại. –

+0

Tôi sẽ thêm mã vào chúng, đây chỉ là để chứng minh lỗi tôi đang gặp phải. – Malachi

Trả lời

2

Bạn có đang sử dụng nhóm xác thực ở bất kỳ đâu trên trang không? Tôi đã gặp sự cố với các sự kiện kiểm soát không kích hoạt khi chúng không thuộc nhóm xác thực và các điều khiển khác trên trang là một phần của nhóm xác thực.

+0

Đặt tất cả các điều khiển trong ValidationGroup làm việc cho tôi. Trước khi sử dụng, ngay cả ModalPopup cũng không hiển thị. – Zeeshanef

1

Tôi muốn thử thay đổi này:

<input id="popupDummy" runat="server" style="display:none" /> 

một cái gì đó như thế này:

<asp:Button id="popupDummy" runat="server" CausesValidation="false" Visible="false" /> 

Tôi đặt cược đầu vào untyped được yêu cầu xác nhận.

4

Thử đặt thuộc tính ValidationSummary "Đã bật" thành false trên sự kiện này: "btnPush_Click" ; và sau đó thiết lập nó trở lại để kích hoạt = "true" trên các sự kiện này: "btnOK_Click", "btnCancel_Click".

Tôi nghĩ rằng điều này sẽ hoạt động nếu bạn không có bản tóm tắt xác thực bên trong Bảng điều khiển mà bạn muốn bật lên. Nhưng đó không phải là giải pháp nếu bạn cần tóm tắt xác thực bên trong cửa sổ bật lên, ... phù thủy là .. trường hợp của tôi :(

Trân trọng

6

đây là một vấn đề với việc sử dụng cả hai ValidationSummary và ModalPopup

xem tại đây:. http://ajaxcontroltoolkit.codeplex.com/WorkItem/View.aspx?WorkItemId=12835

vấn đề là có một mất tích ";" giữa hai người kịch bản được lồng ghép.

Giải pháp của họ là tạo/sử dụng một điều khiển máy chủ tùy chỉnh kế thừa từ ValidationSummary, chèn một ";" vào đoạn mã của trang khởi động để sửa chữa các lỗi:

[ToolboxData("")] 
public class AjaxValidationSummary : ValidationSummary 
{ 
    protected override void OnPreRender(EventArgs e) 
    { 
    base.OnPreRender(e); 
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), this.ClientID, ";", true); 
    } 
} 
+0

đã cố gắng này và nó đã không khắc phục sự cố –

0

tôi đã có cùng một vấn đề, thêm ValidationGroup để điều khiển xác nhận đã làm các trick!

3

Tôi đã thử tất cả các câu trả lời có sẵn trực tuyến nhưng không hoạt động.Sau đó, tôi đã cố gắng để di chuyển mở rộng phương thức của tôi ở cuối của HTML và nó hoạt động tốt cho tôi. Tôi và người dùng của tôi là hạnh phúc :) Tôi không sử dụng TỪ tag Tôi đang sử dụng giữ chỗ Content giống như dưới đây:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
<table id="tblMessage" runat="server" width="100%" > 
    <tr align="center"> 
     <td align="center"> 

nội dung chính và

<asp:Panel ID="pnlSelectClient" Style="display: none" CssClass="box" runat="server">

<asp:ValidationSummary ID="ValidationSummary1" runat="server" /> 
    <asp:UpdatePanel ID="upnlSelectClient" runat="server"> 
     <ContentTemplate> 
      <asp:Button ID="btnOK" runat="server" UseSubmitBehavior="true" Text="OK" CausesValidation="false" OnClick="btnOK_Click" /> 
      <asp:Button ID="btnCancel" runat="server" Text="Cancel" CausesValidation="false" OnClick="btnCancel_Click" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    </asp:Panel> 

Nếu bạn nhận thấy tôi có bản tóm tắt xác nhận bên trong bảng điều khiển vì tôi muốn thông báo lỗi bên trong cửa sổ bật lên (tôi cũng có một số điều khiển bổ sung trong cửa sổ bật lên). và

Một số thẻ HTML khác ở đây vì tôi có quá nhiều thứ khác để thực hiện trong một trang. ngay trước thẻ đóng của TABLE

<ajaxToolkit:ModalPopupExtender ID="mpeSelectClient" runat="server" 
    TargetControlID="popupDummy" 
    PopupControlID="pnlSelectClient" 
    OkControlID="popupDummy" 
    BackgroundCssClass="modalBackground" 
    CancelControlID="btnCancel" 
    DropShadow="true" /> 

</table> 

Done.it's working. Hy vọng rằng công trình cho khác quá.

+0

di chuyển modalpopupextender sau khi bảng điều khiển làm việc cho tôi. Cảm ơn bạn –

0

Một điều khác cần thử, nếu bạn không cần Script khách hàng, bạn có thể vô hiệu hóa nó trong đánh dấu. Việc đó đã khắc phục được sự cố của chúng tôi.

EnableClientScript="false" 
Các vấn đề liên quan