UserControl DirectMethod不在Ext.net中触发

时间:2013-06-25 13:14:00

标签: asp.net ext.net

  

HI,我正在加载一个UserControl(里面有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它工作正常。

     

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

     

谢谢

1 个答案:

答案 0 :(得分:2)

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

可能的解决方案是:

  1. 在每个请求期间重新创建用户控件。这是a related discussion on the Ext.NET forums

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

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

    1. 将DirectMethod放置到页面上。