我有一个页面在page_load方法中执行长时间运行的任务(10到15秒).
我有客户端的JavaScript代码,将向用户显示一个体面的"页面加载"动画GIF.
我能够从代码隐藏中调用JavaScript方法,以显示"页面加载"动画gif,但是,长时间运行的任务正在挂起UI,使得动画gif实际上不会显示直到长时间之后 - 运行任务完成,这与我想要的完全相反.
为了测试这一点,在我的page_load方法中,我调用JavaScript方法来显示动画gif.然后,我使用Thread.Sleep(10000).发生的事情是,直到Thread.Sleep完成后才会显示动画gif.
显然我做错了什么.
任何意见,将不胜感激.
谢谢.
克里斯
下面是代码隐藏的示例:
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript
(GetType(), "Javascript", "javascript: ShowWaitIndicator(); ", true);
Response.Flush();
Thread.Sleep(10000);
}
Run Code Online (Sandbox Code Playgroud) 我有一个分层的对象列表.假设结构如下:
子节点可以有自己的子节点,但目标是基本搜索"父节点".因此,假设父节点类具有名为"Name"的属性 - 并且用户输入部分名称,我希望返回其名称包含用户搜索条件的所有父节点.基本上,这比任何东西都更像是一个"过滤器"功能.所以,我知道如何做到这一点,然而,我遇到的问题是他们的关键目标是保持层次结构的机智.换句话说,如果有一个父节点与筛选条件匹配,我希望返回以下结构:
我目前的努力只会产生:
我正在使用Linq.任何建议将不胜感激.
谢谢!
克里斯
下面的代码片段用于当前过滤器实现:
FilteredReports = Reports.FirstOrDefault().Children.Cast<IHierarchicalResult>()
.SelectRecursive(item => item.Children.Cast<IHierarchicalResult>())
.Where(item => item.Name.ToLower().StartsWith(filterCriteria))
.ToObservableCollection();
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的扩展方法:
public static IEnumerable<T> SelectRecursive<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> getChildren)
{
if (null == source)
{
throw new ArgumentNullException("source");
}
if (null == getChildren) return source;
return SelectRecursiveIterator(source, getChildren);
}
private static IEnumerable<T> SelectRecursiveIterator<T>(IEnumerable<T> source, Func<T, IEnumerable<T>> getChildren)
{
foreach (T item in source)
{
yield return item;
IEnumerable<T> …Run Code Online (Sandbox Code Playgroud) 尝试在Oracle中执行包含两个输入参数的存储过程时,我收到以下错误:
ORA-06550:第1行第7列:
PLS -00306:调用
'P_GET_NEXT_AVAILABLE_RUN'ORA
-06550 时参数的数量或类型错误:第1行第7行:
PL/SQL:语句被忽略
两个输入参数都需要非空值.我无法单步执行代码,否则我将能够看到哪个值为null - 所以 - 在Oracle中有哪种方法可以看到存储过程生成的错误 - 所以我可以确定哪个参数得到了空值?
我有一个lambda表达式,目前看起来像这样:
item => Reports.Add(item)
Run Code Online (Sandbox Code Playgroud)
我想修改它,使其具有条件性,并且基本上检查Reports.Contains(item)是否返回false,然后执行Reports.Add(item)操作.这可以在一条线上使用lambda吗?
克里斯
是否可以在lambda表达式中引用私有属性?还是只有公共财产?
例如.说我的私有财产名为InnerCollection,代码行将是:
x => x.InnerCollection
Run Code Online (Sandbox Code Playgroud)
有没有办法以某种方式实现这一点 - 不使用反射等?
使用.NET 4.0.
谢谢.
克里斯
我试图获取我视图中的所有逻辑子项(用户控件)。我从根元素开始,遍历逻辑树,一切都按预期工作,但是,我的几个子控件是像 ListBox 等这样的项目,它们是数据绑定的并为其子级使用数据模板,这些是没有在逻辑树中返回。
这是我正在使用的代码:
private static void GetLogicalChildren<T>(DependencyObject parent, List<T> logicalCollection) where T : DependencyObject
{
IEnumerable children = LogicalTreeHelper.GetChildren(parent);
foreach (object child in children)
{
if (child is DependencyObject)
{
DependencyObject depChild = child as DependencyObject;
if (child is T)
{
logicalCollection.Add(child as T);
}
GetLogicalChildren(depChild, logicalCollection);
}
}
}
Run Code Online (Sandbox Code Playgroud)