由于我没有找到CommandName属性与C#CodeBehind中匹配方法调用之间的正确连接,我很想找到窗帘后面发生的事情以及谁在触发哪个事件以及连接之间是如何出现的这两件事。
以下是我的示例代码:
<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定义了我的Method SwitchToUserDetail,我得到了我的DirectEvent的对象和DirectEventArgs,而那个东西与GridCommand没有关系......
对此有何解释?
答案 0 :(得分:2)
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 [ “命令”]