Asp.net UserControl DirectMethod未在Ext.net中触发

Asp.net UserControl DirectMethod未在Ext.net中触发,asp.net,ext.net,Asp.net,Ext.net,您好,我正在将一个UserControl(其中包含GridPanel)加载到 选项卡面板 但当我单击Gridpanel编辑命令按钮时,服务器上的事件 side方法不工作并显示异常,如 异常详细信息:System.Web.HttpException:ID为的控件 找不到“id8b177c82adb2e925” 我的代码是 对于userControl,.ascx代码为 在观察webBrowser中的源页面时,我发现这些控件 不同的Id使相应的函数不显示。如果我给出 “ClientIdMode=sta

您好,我正在将一个UserControl(其中包含GridPanel)加载到 选项卡面板

但当我单击Gridpanel编辑命令按钮时,服务器上的事件 side方法不工作并显示异常,如

异常详细信息:System.Web.HttpException:ID为的控件 找不到“id8b177c82adb2e925”

我的代码是

对于userControl,.ascx代码为

在观察webBrowser中的源页面时,我发现这些控件 不同的Id使相应的函数不显示。如果我给出 “ClientIdMode=static”它在加载时为我提供了唯一的Id问题 页面中的同一控件。如果我在单页中使用此代码 没有用户控制,它工作得很好

调用服务器端方法应该做什么

多谢各位


我猜您在一个请求期间动态呈现一个用户控件,而在另一个请求期间不会重新创建它,因此Ext.NET找不到它的DirectMethod,因为服务器上没有用户控件实例

可能的解决办法是:

  • 在每个请求期间重新创建用户控件。这是

  • 在例如WebService(asmx)或HTTP处理程序(ashx)中设置DirectMethod的处理程序,并通过URL调用它。这样的调用不需要用户控件实例。这里有一些例子。

  • 这种方法的缺点是,您将无法访问Web服务或HTTP处理程序中用户控件的控件。所有必需的内容都应该作为请求的额外参数从页面提交

  • 将DirectMethod放置到页面

  • 我决定使用第二种方法,但在我看来,在操作GridVIe、store和webservice内部(访问usercontrol元素,如usercontrol内部,似乎是一个问题)和返回客户端时,似乎有点困难,3。我的问题是你的个人经验和给我的建议是什么(很抱歉我的英语不好。)**我也在研究我的项目的最佳方法,但还不能决定。在我的项目中,我有一个主页和17-18个用户控件(包含button gridview等…),单击主页内的按钮时,我会动态加载用户控件(也在this用户控件内,调用另一个用户控件)。是的,您无法在Web服务中访问用户控件的控件。所有必需的内容都应作为请求的额外参数从页面提交。我已使用此信息编辑了答案。关于我的个人偏好。我不希望重新创建用户控件并使用Web服务或HTTP处理程序。理想情况下,我更希望使用MVC.for t第一种方法(在每个请求期间重新创建一个用户控件),示例网页上是否有一个示例。tahnk you’s answer我问这个问题,因为我不擅长web服务,例如响应标记在发布后返回一个脚本标记(例如,创建一个新窗口并向用户发出警报,或者创建一个窗口并加载用户控件),是否有一种方法可以在客户端处理这些代码和执行,
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GridPanelUserControl.ascx.cs" Inherits="Ext_PracticeExamples.GridPanelUserControl" %>
    
    
    <ext:GridPanel ID="gpEmployeeList" runat="server" StripeRows="true" Title="Employee List" Layout="FitLayout"
        Width="620" Height="400" AutoExpandColumn="FirstName">
    
        <Store>
           .....  
        </Store>
        <ColumnModel ID="ColumnModel1" runat="server">
            <Columns>
    
                  <ext:ImageCommandColumn ID="imgSettings"    runat="server" Text="Settings" Resizable="false">
                    <Commands>
                        <ext:ImageCommand Icon="BasketEdit" Style="text-align: center" CommandName="Settings">
                        </ext:ImageCommand>
                    </Commands>
                    <Listeners>
                        <Command Handler=" #{DirectMethods}.fnDisplaySettings(record.data.Company,record.data.Price,record.data.Change);" />
    
                    </Listeners>
                </ext:ImageCommandColumn>
            </Columns>
        </ColumnModel>
    
      [DirectMethod]
         public void fnDisplaySettings(string name, double X, double Y)
         {     
          // ..some Operation....    
             Response.Redirect("~/_Default.aspx");
         }