因为我在C#CodeBehind中找不到CommandName属性和匹配方法之间的正确连接,所以我很想在幕后找到这里发生的事情,以及谁触发了哪个事件以及这两件事之间的联系如何出现。

这是我的示例代码:

 <ColumnModel ID="ColumnModel1" runat="server">
            <Columns>
                <ext:CommandColumn ButtonAlign="Center">
                    <Commands>
                        <ext:GridCommand Icon="User" CommandName="SwitchToUserDetail" Text="Details"></ext:GridCommand>
                    </Commands>
                </ext:CommandColumn>
            </Columns>
        </ColumnModel>


    <DirectEvents>
        <Command OnEvent="SwitchToUserDetail" >
            <ExtraParams>
                <ext:Parameter Name="ID" Value="this.selModel.getSelected().data.id" Mode="Raw" />
            </ExtraParams>
        </Command>
    </DirectEvents>


到目前为止,一切工作正常,但再次说明一下,希望我的英语不好,这会更好一点:

这个属性

CommandName="SwitchToUserDetail"


与我的DirectEvent有一些联系

<Command OnEvent="SwitchToUserDetail" >
        <ExtraParams>
            <ext:Parameter Name="ID" Value="this.selModel.getSelected().data.id" Mode="Raw" />
        </ExtraParams>
    </Command>


如果在我的CodeBehind中查看定义了方法SwitchToUserDetail的地方,我不会得到原因,我将获取DirectEvent的对象和DirectEventArgs,而该事件与GridCommand无关。

有什么解释吗?

最佳答案

CommandName和命令名称值提供的后面代码中的方法之间的连接。如果您查看由Ext.NET生成的JavaScript代码,则会看到类似以下内容:

directEvents: {
command: {fn:function(command,record,rowIndex,colIndex){var params=arguments;
    Ext.net.DirectEvent.confirmRequest({
        extraParams: {"ID":'id'}
        ,control:this,action:'Command'});},delay:20}
}


如您所见,调用DirectEvent的处理程序具有以下参数:command,record,rowIndex,colIndex。而且,如果您要添加新的额外参数“ command”来定向事件,则可以相应地使其他内容成为命令。

<Command OnEvent="SwitchToUserDetail" >
    <ExtraParams>
        <ext:Parameter Name="ID" Value="this.selModel.getSelected().data.id" Mode="Raw" />
        <ext:Parameter Name="command" Value="command" Mode="Raw" />
    </ExtraParams>
</Command>


在服务器端,您可以阅读以下内容:


  e.ExtraParams [“ command”]

关于c# - 从Ext:Command列调用命令时,幕后发生了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7980760/

10-10 21:36