小编Ste*_*ook的帖子

Spark列表上的按钮在某些条件下无法单击ItemRenderer

我有一个带有我自己的自定义渲染器的Spark列表.当用户滚动列表中的项目时,左侧和右侧按钮出现在行中,允许用户更改正在呈现的值的值.例如,如果有5个优先级(1到5),则左按钮减小值,右按钮增加值.

快速注意:它们不是真正的按钮,而是s:图像设计像按钮一样工作.

现在这个工作正常,除了在一个特定条件下:如果用户选择行,然后将光标移出行,然后返回到行,当用户单击任一按钮时,没有任何反应.即使这种情况听起来令人费解,但测试用户仍然会这样做!这对他们来说真的很令人沮丧.

我发现了这种行为的原因:按钮仅显示在项呈示器的悬停和选定状态中.这就是我想要发生的事情 - 按钮不应该是可见的,除非用户的指针能够按下它们.在列表中选择项目时,渲染器的状态将转到选中状态.再次单击不会更改状态.将指针移出行,然后再次返回并单击(在已选择的行上)使行的状态从选定状态变为正常状态(鼠标按下时)并返回到选定状态(在鼠标按下时).我发现这很奇怪!这意味着按钮实际上在处于正常状态时(它应该)因此没有被点击而消失.

我曾经考虑过,不知何故,我可以在项目渲染器的Z顺序中将图像"更高",因此它们会在项目渲染器获取之前拦截click事件,但我无法使其工作.

有人可以帮忙吗?

如果有帮助,ItemRenderer的片段如下:

<s:HGroup width="150" verticalAlign="middle" verticalCenter="0">
  <s:Image id="previousItemButton" buttonMode="true" source="{_leftArrow}" width="16" height="16" visible.normal="false" visible.hovered="true" visible.selected="true" click="previousClicked(event)"/>
  <s:Label text="{data.outputFormat.value}" width="100%" click="nextClicked(event)"/>
  <s:Image id="nextItemButton" buttonMode="true" source="{_rightArrow}" width="16" height="16" visible.normal="false" visible.hovered="true" visible.selected="true" click="nextClicked(event)"/>
</s:HGroup>
Run Code Online (Sandbox Code Playgroud)

更新:

该问题是由构成ItemRenderer的组件的最高级别上的虚假rollOut事件引起的.这个rollOut称为一个方法,它包括:

protected function hgroup1_rollOutHandler(event:MouseEvent):void {
  if (this.selected) {
    this.selected = false;
  }
}
Run Code Online (Sandbox Code Playgroud)

这导致了问题并删除了rollOut,该方法解决了这个问题.我不知道为什么在mouseDown上激活转出的原因.

apache-flex list onclick itemrenderer

5
推荐指数
0
解决办法
1049
查看次数

Hive 0.14 UDF Maven项目缺少依赖性

我试图建立一个Maven项目,它将包含我想在我的Hive查询中使用的用户定义函数(UDF).我开始使用不包含源文件的Maven项目,以及以下POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>exp</groupId>
    <artifactId>HiveUdfTestProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>0.14.0</version>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

当我尝试构建项目时,出现以下错误:

无法在项目HiveUdfTestProject上执行目标:无法解析项目exp的依赖项:HiveUdfTestProject:jar:1.0-SNAPSHOT:无法解析以下工件:org.apache.calcite:calcite-core:jar:0.9.2-incubating- SNAPSHOT,org.apache.calcite:calcite-avatica:jar:0.9.2-incubating-SNAPSHOT:找不到工件org.apache.calcite:calcite-core:jar:0.9.2-incubating-SNAPSHOT - > [帮助1 ]

hive maven apache-calcite

5
推荐指数
1
解决办法
3680
查看次数

Spark Shell陷入YARN Accepted状态

在Yarn和EMR上运行Spark 1.3.1.当我运行spark-shell时,一切看起来都很正常,直到我开始看到这样的消息INFO yarn.Client: Application report for application_1439330624449_1561 (state: ACCEPTED).这些消息是无休止地生成的,每秒一次.同时,我无法使用Spark shell.

我不明白为什么会这样.

hadoop emr hadoop-yarn apache-spark

5
推荐指数
2
解决办法
8304
查看次数

将数据从hdfs加载到本地系统的有效方法?

我正在尝试使用hadoop fs -get将数TB的数据从hdfs加载到本地,但是要花费数小时才能完成此任务。是否存在将hdfs中的数据获取到本地的另一种有效方法?

hadoop bigdata hdfs

3
推荐指数
1
解决办法
1260
查看次数

使用EF和LINQ减少到数据库的次数

请考虑以下代码:

// check record exists

Adjuster adj = new Adjuster();

if (db.Adjusters.Where(x => x.userID == user.id).Any())
{
    adj = db.Adjusters.Where(x => x.userID == user.id).FirstOrDefault();
}
else
{
    // create adjuster record
    adj.id = Guid.NewGuid();
    adj.userID = user.id;

    db.Adjusters.InsertOnSubmit(adj);
}
Run Code Online (Sandbox Code Playgroud)

注意我先打电话.Any()然后打电话.FirstOrDefault().这将是对数据库的两个单独查询,对吧?我怎样才能将其限制为一个?

现在,请考虑以下代码:

adj.isPropertyAdjuster = user.SomeEntity.someProperty;
adj.isCasualityLiabilityAdjuster = user.SomeEntity.someProperty;
adj.isLargeLossAdjuster = user.SomeEntity.someProperty;

db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

使用LINQ/EF,我可以访问与彼此有关系的不同实体.但是,每次我这样做时,这不会引起对数据库的多次调用吗? 例如,这三个单独的数据库调用是什么?

adj.isPropertyAdjuster = user.SomeEntity.someProperty;
adj.isCasualityLiabilityAdjuster = user.SomeEntity.someProperty;
adj.isLargeLossAdjuster = user.SomeEntity.someProperty;
Run Code Online (Sandbox Code Playgroud)

如何将此限制为对数据库的单一调用?我假设唯一的方法是实例化一个这样的对象:

SomeEntity obj = user.SomeEntity;
Run Code Online (Sandbox Code Playgroud)

然后,像这样调用属性:

adj.isPropertyAdjuster = obj.someProperty;
Run Code Online (Sandbox Code Playgroud)

你的想法是什么?

c# entity-framework linq-to-sql asp.net-mvc-4

2
推荐指数
1
解决办法
774
查看次数