0

プロジェクトで DevExpress ツリーリスト コントロールを使用しています。列の 1 つで、アイコンをクリックすると JavaScript 関数を呼び出すことができます。ラジオ ボタンのインデックスの 1 つが != 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);
                                                }     

最悪の場合、コントロールの div 全体に if ブロックを配置し、else に行を入れずに同じコードを配置できると確信していますが、1 行を除外するためだけに 100 行以上のコードを繰り返すのはばかげているようです。良い提案はありますか?

4

0 に答える 0