通过命令名确定发出的rowCommand

时间:2013-02-08 12:52:09

标签: extjs grid command ext.net

我在网格面板上运行了两个行命令,如下所示:

<ext:CommandColumn>
   <Commands>
      <ext:GridCommand Icon="NoteEdit" CommandName="mailEdit">
          <ToolTip Text="Edit" />
      </ext:GridCommand>
      <ext:GridCommand Icon="ApplicationLightning" CommandName="mailChangeBlock">
           <ToolTip Text="block/unblock" />
      </ext:GridCommand>                               
   </Commands>                               
</ext:CommandColumn>

现在我听这些行命令:

<Listeners>
    <Command Handler="if(command == 'mailEdit'){mailEdit}else{mailChangeBlock}; console.log(command);"/>
</Listeners>

另一次尝试是:

<Command Handler="(command == 'mailEdit') ? mailEdit : mailChangeBlock;" />

执行控制台日志没有问题,但是调用函数中的console.log没有被执行,即使每次调用都添加括号时调用该函数,但传递给函数的数据也会丢失

现在我的问题是,我如何确定执行了哪个命令并调用相应的函数并为其提供值,元数据和记录?

1 个答案:

答案 0 :(得分:0)

可以通过Extra Params发送命令名称和其他值:

<DirectEvents>
   <Command OnEvent="GridCommand">
      <ExtraParameters>
         <ext:Parameter Name="commandname" Value="command" Mode="Raw" />
         <ext:Parameter Name="recordid" Value="record.data.id" Mode="Raw" />
      </ExtraParameters>
   </Command>
</DirectEvents>

然后可以在服务器端执行命令的确定(command返回CommandName中定义的CommandColumn),然后执行服务器端脚本。