0

我在项目中使用 DevExpress 树列表控件。其中一列允许单击时调用 javascript 函数的图标。当我们的单选按钮之一 index != 0; 时,我们现在需要不调用其中一个函数的一部分;

在 ClientSideEvents 类中,我将 CustomButtonClick 属性设置为根据在列中单击的按钮运行的 javascript。相关代码:

<ClientSideEvents 
                    CustomButtonClick="function(s, e) 
                                       {                                 
                                            switch(e.buttonID)
                                            {
                                                case 'scMarkRead':
                                                    treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
                                                    break;
                                                case 'scMarkUnread':
                                                    treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
                                                    break;
                                                case 'scStrike':                                                        
                                                    treeWatches.GetNodeValues(e.nodeKey, &quot;Database&quot;, addDB);                                                                                            
                                                    treeWatches.PerformCallback('scMarkRead|' + e.nodeKey);                                                    
                                                    break;
                                                case 'scCreateTask':
                                                    var fields = [&quot;Database&quot;, &quot;Filename&quot;, &quot;Name&quot;];
                                                    treeWatches.GetNodeValues(e.nodeKey, fields, createTask);
                                                    break;
                                                case 'scDelete':
                                                    treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
                                            }   

在“scStrike”的情况下,如果 radlstGroup.SelectedIndex != 0,我不想调用 treeWatches.PerformCallback.... 行。在其他地方,我能够将代码包装在条件 <% if else {} %> 和它工作得很好,但这是围绕我不想显示的控件。当我尝试下面的示例时,页面加载但我的树列表不会扩展。

    <ClientSideEvents 
                        CustomButtonClick="function(s, e) 
                                           {           
                                                var url = 'http://gcs.regscan.com/strike/Strike.aspx?db=';      

                                                switch(e.buttonID)
                                                {
                                                    case 'scMarkRead':
                                                        treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
                                                        break;
                                                    case 'scMarkUnread':
                                                        treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
                                                        break;
                                                    case 'scStrike':                                                        
                                                        treeWatches.GetNodeValues(e.nodeKey, &quot;Database&quot;, addDB);                                                                                            
<% if (radlstGroup.SelectedIndex == 0)
{%>                                                       
treeWatches.PerformCallback('scMarkRead|' + e.nodeKey); 
<%} %>                                                   
                                                        break;
                                                    case 'scCreateTask':
                                                        var fields = [&quot;Database&quot;, &quot;Filename&quot;, &quot;Name&quot;];
                                                        treeWatches.GetNodeValues(e.nodeKey, fields, createTask);
                                                        break;
                                                    case 'scDelete':
                                                        treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
                                                }     

在最坏的情况下,我确信我可以将 if 块放在控件的整个 div 周围,并在 else 中放置相同的代码而没有该行,但是为了省去一行而再次重复 100 多行代码似乎很愚蠢。有什么好的建议吗?

4

0 回答 0