奇怪的.net代码需要c#版本

时间:2010-11-26 16:05:53

标签: silverlight flex datagrid scroll

Eran Betzalel为DataGrid写了一个小扩展类,每个人都说它很棒。 但我无法弄清楚它使用的语言以及如何使其在Silverlight C#.net 3.5中运行。

这是他12个月前写的课程:

public final class DataGridEx extends DataGrid{ 
    public var maintainScrollAfterDataBind:Boolean = true; 

    public function DataGridEx() 
    { 
            super(); 
    }                

    override public function set dataProvider(value:Object):void { 
            var lastVerticalScrollPosition:int = this.verticalScrollPosition; 
            var lastHorizontalScrollPosition:int = this.horizontalScrollPosition; 

    super.dataProvider = value; 

    if(maintainScrollAfterDataBind) { 
            this.verticalScrollPosition = lastVerticalScrollPosition; 
            this.horizontalScrollPosition = lastHorizontalScrollPosition; 
    } 

}

我觉得他已经覆盖了一个属性,我认为这在.net中是不可能的。

感谢您在下面的所有评论,我将添加更多详细信息(非常抱歉延迟回到此状态,但我已经在床上睡了4天发烧!)。

我有一个Silverlight Datagrid,它被数据绑定到一个WCF服务调用,网格在网格的每一行有两个按钮,一个打开工作站,另一个打开工作站关闭工作站,其余数据在行中是用户信息。

当用户按下特定行上的“打开”或“关闭”按钮时,我将更新顶部页面上的摘要部分,以及更新数据库中的数据;此时网格需要刷新,而用户不必关注他/她点击的行。

问题是刷新导致第一行弹到可见区域的顶部,我真的希望有一种方法可以记住行位置并通过代码移动滚动条吗?

我有可能直接在网格中更新数据,但它很复杂,因为虽然它打开/关闭,但其中有其他逻辑使其成为一个4状态决策。但是,如果这是我唯一的选择,我可以将该逻辑从服务转移到silverlight中,尽管它不是首选。

非常感谢您对此的帮助。 丰富。

3 个答案:

答案 0 :(得分:0)

Eran Betzalel使用的语言是ActionScript。在这种情况下,Eran正在使用它来增强Flex提供的数据网格,这是用于构建基于Adobe Flash的富Internet应用程序的SDK。

相比之下,Silverlight是用于构建Internet应用程序的Microsoft框架。 Silverlight应用程序通常用C#或VB.Net编写。不幸的是,除了外观相似之外,Flex数据网格与Silverlight中的数据网格没有关系,因为它们是由不同的供应商发布的。

这意味着两个数据网格的实现没有任何共同之处。因此,您发布的代码在Silverlight#中没有直接的等效内容。

从您的问题中不清楚您要实现的目标。如果你解释你想要做什么,我相信有经验的Silverlight能够帮助你。

答案 1 :(得分:0)

您可以通过JavaScript设置浏览器scrollTo属性,这样它就会滚动回到表格的顶部。

编辑:
哎呀,不,你必须找到一个Silverlight方法来做到这一点。 但是,不应该太难,只需滚动到桌面。 我不知道Silverlight,但在VB.NET中,你可以使用(OnAfter)DataBind事件。

答案 2 :(得分:0)

Eran的代码是Actionscript(ECMAScript,类似于javascript),并在Adobe Flex framework / api中扩展了一个对象。

代码编译为SWF,最终将在Adobe Flashplayer中运行。

Silverlight是微软对Adobe Flash的回应。

总而言之,您发布的内容并非“奇怪的.net代码”。这不是.net代码。来自Eran的OP甚至没有被标记为.net代码。

要在Silverlight中“使其工作”,您可能必须编写一个编译器来编译ActionScript& Flex API到C#/ Silverlight。

但那不是你的问题。

你的问题是什么?究竟,你想要在Silverlight中实现什么?