0

嗨,我正在将一个用户控件(其中包含 GridPanel)加载到 tabPanel 中。

但是,当我单击 Gridpanel 编辑命令按钮时,服务器端事件方法不起作用并显示异常,例如

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

我的代码是

对于 userControl : .ascx 代码是

<%@ 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>

以及未触发的相应 .cs 类文件方法。

  [DirectMethod]
     public void fnDisplaySettings(string name, double X, double Y)
     {     
      // ..some Operation....    
         Response.Redirect("~/_Default.aspx");
     }

在 webBrowser 中观察源页面时,我发现控件具有不同的 ID,因此相应的功能不显示。如果我给出“ClientIdMode = static”,当我在页面中加载相同的控件时,它会给我唯一 ID 问题。如果我在没有 UserControl 的单页中使用此代码,它工作正常。

我应该怎么做调用服务器端方法。

谢谢

4

1 回答 1

2

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

可能的解决方案是:

  1. 在每个请求期间重新创建一个用户控件。这是Ext.NET 论坛上的相关讨论

  2. 在例如 WebService (asmx) 或 HTTP 处理程序 (ashx) 中设置 DirectMethod 的处理程序,并通过 URL 调用它。这样的调用不需要用户控件实例。以下是示例。 http://examples.ext.net/#/Events/DirectMethods/WebService/
    http://examples.ext.net/#/Events/DirectEvents/WebService/

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

  1. 将 DirectMethod 放置到页面。
于 2013-06-26T05:28:16.523 回答