jquery树菜单中的粘性
在我的应用程序中有一个由jquery支持的动态树菜单,我正在尝试实现一个粘性的。树中的所有父节点最初都会折叠,如果用户打开一个父节点,然后滚动到父节点之前,我希望父节点字段保持在菜单的顶部,直到用户滚动到最后一个子节点之前。此时,父对象将解粘jquery树菜单中的粘性,jquery,asp.net,tree,sticky,Jquery,Asp.net,Tree,Sticky,在我的应用程序中有一个由jquery支持的动态树菜单,我正在尝试实现一个粘性的。树中的所有父节点最初都会折叠,如果用户打开一个父节点,然后滚动到父节点之前,我希望父节点字段保持在菜单的顶部,直到用户滚动到最后一个子节点之前。此时,父对象将解粘 </HeaderTemplate> <ItemTemplate> <div id="divNinjaViewField"
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
有些孩子也是父母。因此,在很多情况下,我希望多位家长都能站在最高层。我所拥有的一切都很好,但也有些奇怪
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
当滚动到子对象旁边时,字段会粘在顶部并按预期消失。但是,如果两个父节点是打开的,则第二个节点不会像假定的那样解除连接;不管发生什么,它总是挂在顶端
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
我尝试使用console.log进行调试,但每当我写入控制台时,它就会抛出一个js异常“replace不是undefined的成员”
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
jquery、css和html如下所示。非常感谢您的帮助
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
JQuery
var _currentGenertion;
var _loaded;
var _initialTop;
function ManageFieldListScroller() {
$(".fields-list").scroll(function () {
var divTop = $(".fields-list").position().top;
var newTop = $('.field-item').position().top;
if(newTop < _initialTop) {
stickParentFields(divTop) //scroll up
} else {
restickParentFields(divTop) //scroll down
}
_initialTop = newTop;
});
}
function restickParentFields(divTop) {
$(".openedParent.unstuck").each(function () {
var $nextParent = $(this);
var top = $nextParent.position().top - 1; //"-1" because browsers are stupid
var distanceToTopOfList = top - divTop
var doIt = distanceToTopOfList <= 0
$("div[path='" + $nextParent.attr('fieldid') + "']").each(function (i, item) {
var $nextChild = $('#' + item.id);
var nextChildTop = $nextChild.position().top
var maxChildTop;
if(i==0) {
minChildTop = nextChildTop;
maxChildTop = nextChildTop;
} else {
if(nextChildTop < minChildTop) {
minChildTop = nextChildTop;
} else if(nextChildTop > maxChildTop) {
maxChildTop = nextChildTop;
}
}
if (maxChildTop > divTop) {
_currentGenertion = _currentGenertion + 1;
var className = 'sticky' + _currentGenertion
$nextParent.removeClass('unstuck');
$nextParent.addClass('sticky');
$nextParent.addClass(className);
}
});
});
$(".openedParent.sticky").each(function () {
var $nextParent = $(this);
var top = $nextParent.position().top - 1; //"-1" because browsers are stupid
var distanceToTopOfList = top - divTop
var doIt = distanceToTopOfList <= 0
$("div[path='" + $nextParent.attr('fieldid') + "']").each(function (i, item) {
var $nextChild = $('#' + item.id);
var nextChildTop = $nextChild.position().top
var minChildTop;
if(i==0) {
minChildTop = nextChildTop;
} else {
if(nextChildTop < minChildTop) {
minChildTop = nextChildTop;
}
}
if (minChildTop > divTop) {
var parentClasses = $nextParent.attr('class')
var parentClassesArray = parentClasses.split(/\s+/)
$nextParent.addClass('unstuck');
$.each(parentClassesArray, function (i, css) {
var $currentClass = $(css)
if (css.indexOf('sticky') >= 0) {
$nextParent.removeClass(css);
Unstuck = true
}
});
if (Unstuck == true) {
_currentGenertion = _currentGenertion - 1;
}
}
});
});
}
function stickParentFields(divTop) {
$(".openedParent").not('.unstuck').each(function () {
var $nextParent = $(this);
var top = $nextParent.position().top - 1; //"-1" because browsers are stupid
var distanceToTopOfList = top - divTop
var doIt = distanceToTopOfList <= 0.5
var className = 'sticky' + _currentGenertion;
if (doIt) {
stickParentField(className, divTop, $nextParent)
var scrolledPastField = true;
$("div[path='" + $nextParent.attr('fieldid') + "']").each(function (i, item) {
var $nextChild = $('#' + item.id);
var nextChildTop = $nextChild.position().top
var topDifference = nextChildTop - top;
if (nextChildTop > top) {
scrolledPastField = false;
}
});
// ------------------------------------------------ Unstick Fields ---------------------------------------------
if (scrolledPastField == false) {
//return false;
}
else {
var parentClasses = $nextParent.attr('class')
var parentClassesArray = parentClasses.split(/\s+/)
$nextParent.addClass('unstuck');
$.each(parentClassesArray, function (i, css) {
var $currentClass = $(css)
if (css.indexOf('sticky') >= 0) {
$nextParent.removeClass(css);
}
});
_currentGenertion = _currentGenertion - 1;
}
}
});
}
function stickParentField(className, divTop, $nextParent) {
var parentClasses = $nextParent.attr('class')
if (parentClasses.indexOf(className) < 0) {
var stickyDivCount;
var nextClassName;
var nextClassTop;
className = 'sticky' + _currentGenertion
stickyDivCount = $('.sticky').length
_currentGenertion = stickyDivCount + 1
nextClassName = 'sticky' + _currentGenertion
nextClassTop = (stickyDivCount * 30) + divTop
$("<style type='text/css'> ." + nextClassName + "{ top:" + nextClassTop + "px;} </style>").appendTo("head");
var newUpperMargin = _currentGenertion * 20;
var newHeight = $(".fields-list").height() - 20;
$nextParent.addClass('sticky');
$(".fields-list").css("margin-top", newUpperMargin);
$(".fields-list").height(newHeight);
$nextParent.removeClass('unstuck');
$nextParent.addClass(nextClassName);
$nextParent.css();
}
$(document).ready(function () {
if (_loaded != true) {
_loaded = true;
_currentGenertion = 1;
_initialTop = $('.field-item').position().top
}
ManageFieldListScroller();
});
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
HTML
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>
高级列选项
您的第三个代码示例看起来更像asp.net,而不是经典的asp-它不能两者都是。它是asp.net。“classic asp”标记是一个意外事件。您的第三个代码示例看起来更像asp.net而不是classic asp-不可能两者都是。它是asp.net。“经典asp”标签是一个意外。
</HeaderTemplate>
<ItemTemplate>
<div id="divNinjaViewField" runat="server" objecttype="field" datatype='<%#Container.DataItem.DataType%>' haschildren='<%#If(Container.DataItem.HasChildren, True, False)%>' class='<%#If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren) And (Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren), "parentFieldItem nondrag isNumeric",
If((Container.DataItem.IsSibling Or Container.DataItem.HasChildren), "parentFieldItem nondrag",
If(Container.DataItem.IsNumeric Or Container.DataItem.HasNumericChildren, "field-item isNumeric",
"field-item")))%>'
style="margin-left: 0;" fieldid='<%# Container.DataItem.ID%>' path="" onclick="ParentDivClicked(this, true)" isnumeric='<%# Container.DataItem.IsNumeric %>'>
<div class="clearfix viewField" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class='<%#If(Container.DataItem.HasChildren, "ui-icon ui-icon-triangle-1-e", "icon-placeholder")%> <%#If(Container.DataItem.IsNumeric, "isNumeric", "")%>' style='float: left; margin-top: -2px; margin-right: .3em;'></span>
<%# Container.DataItem.FriendlyName%>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
<div id="divAdvancedOptions" onclick="AdvancedOptionsDivClicked(this, true)" class="advancedSourceOptions">
<div id="divAdvancedColumnOptions" runat="server" class="AdvancedOptions">
<div class="clearfix" style="color: #000; font-weight: bold; cursor: pointer; padding: 4px; margin-left: 12px;" onmouseover="$(this).css('background-color', '#eee');" onmouseout="$(this).css('background-color', '');">
<span class="ui-icon ui-icon-triangle-1-e advancedColumnOptions" style='float: left; margin-top: -2px; margin-right: .3em;'></span>
Advanced Column Options
<div class="specificAdvancedColumnOptions" style="display: none; font-weight: normal; padding: 4px; margin-left: 24px;">
<div class="advancedOptionItem">
<a id="calculatedFieldLink" href="#" onclick="toggleExpressionEditor(0, true);" class="db_link" style="width: 100%; padding-bottom: 200px;">Calculated Column</a>
</div>
<div class="advancedOptionItem">
<a id="conditionalFieldLink" href="#" runat="server" onserverclick="conditionalFieldLink_ServerClick" class="db_link" style="width: 100%;">Conditional Column</a>
</div>
</div>
</div>
</div>
</div>
</FooterTemplate>