2011-11-02 38 views
2

因为我没有找到CommandName属性和C#CodeBehind中匹配方法的调用之间的正确连接,所以我很想找到幕布背后发生了什么事情,谁在发射哪个事件,以及这些事件之间的连接如何出现两件事情。当从我的Ext:CommandColumn中调用命令时幕后发生了什么?

这里是我的示例代码:

<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有关的信息,所以我不这么做。

对此有何解释?

回答

2

命令名称与命令名称值提供的代码后面的方法之间的连接。如果你会看在通过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有这样的论点:命令,记录和rowIndex,colIndex。如果您将添加新的额外参数“命令”来指示事件,则可以根据命令做出不同的事情。

<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 [ “命令”]

+0

好了,但我认为你必须把模式=在你的最后一个例子中,“Raw”代替Mode =“Value” – Evils

+0

你是对的!谢谢! – Baidaly

相关问题