我在项目中使用 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, "Database", addDB);
treeWatches.PerformCallback('scMarkRead|' + e.nodeKey);
break;
case 'scCreateTask':
var fields = ["Database", "Filename", "Name"];
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, "Database", addDB);
<% if (radlstGroup.SelectedIndex == 0)
{%>
treeWatches.PerformCallback('scMarkRead|' + e.nodeKey);
<%} %>
break;
case 'scCreateTask':
var fields = ["Database", "Filename", "Name"];
treeWatches.GetNodeValues(e.nodeKey, fields, createTask);
break;
case 'scDelete':
treeWatches.PerformCallback(e.buttonID + '|' + e.nodeKey);
}
在最坏的情况下,我确信我可以将 if 块放在控件的整个 div 周围,并在 else 中放置相同的代码而没有该行,但是为了省去一行而再次重复 100 多行代码似乎很愚蠢。有什么好的建议吗?