因为我在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/