小编Mt.*_*ers的帖子

在Android中处理事件的最佳方式

我知道这似乎是一个重复的问题,但我真的无法找到相关主题的好答案.

关于什么是处理OnClick事件的最佳方式,有很多问题Button.
以下是我遇到的一些选项:

1 - 以编程OnCreate方式定义侦听器:

button.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
        //do stuff
    }
});
Run Code Online (Sandbox Code Playgroud)

2 - android:OnClick在XML上设置属性:

<Button android:id="@+id/btnDelete"
    ...
    android:OnClick="btnDelete_OnClick"/>
Run Code Online (Sandbox Code Playgroud)

3 - OnClickListenerActivity类上实现接口并将自引用传递给Button:

public class MainActivity extends Activity implements OnClickListener{
    @Override
    public void onClick(View v) {
        //do stuff
    }

    protected void onCreate(Bundle savedInstanceState) {
        ...
        button.setOnClickListener(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

4 - 创建一个OnClickListener类型为的字段:

private OnClickListener onClickHandler = new OnClickListener(){

    @Override
    public void onClick(View v) { …
Run Code Online (Sandbox Code Playgroud)

java android event-handling

14
推荐指数
1
解决办法
1848
查看次数

ASP.NET回发中的数据持久性

语境:

我经常遇到这样的情况:我们的ASP.NET页面必须在GridView上向用户显示数据,让他随心所欲地更改它(单元格上的文本框),并且只有当他实际点击时才将其保存到数据库中.保存按钮".此数据通常是页面上信息的虚拟状态,这意味着用户可以更改所有内容,而无需保存,直到他点击"保存按钮".在这些情况下,总是需要在ASP.NET回发中保留数据列表.这些数据可以是一个DataTable或只是一些的实例List<Someclass>.

我经常看到人们实现这一点并持久保存数据Session.在这种情况下,我通常也会看到一些用户导航时打开多个标签的问题,有些时候在同一页面上.两个不同选项卡的数据将合并在一起,导致信息被扰乱的问题.

如何经常使用Session的示例:

private List<SomeClass> DataList
{
    get
    {
        return Session["SomeKey"] as List<SomeClass>;
    }
    set 
    {
        Session["SomeKey"] = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

人们经常试图通过做这样的事情来解决它:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataList = null
    }
    else
    {
        FillGridView(DataList);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当两个标签已经加载并且用户正在更改GridView值时,出于某种奇怪的原因,他试图通过点击另一页上的"保存"按钮来保存数据呢?我个人不喜欢这个选项.

其他方法是将数据放在上面ViewState.但是,当涉及到持久存在的大型列表时,它可能会在页面存储时严重影响页面(HiddenField).

但是,这项工作的最佳方式是什么?有一次,我想SessionViewState在哪里一起使用ViewState将保存一个唯一的标识符来索引Session保存的数据.这样可以防止在浏览器上的标签之间共享数据:

private List<SomeClass> DataList
{
    get
    {
        if (ViewState["SomeKey"] == null)
        {
            ViewState["SomeKey"] = Guid.NewGuid().ToString();
        }

        return Session[ViewState["SomeKey"].ToString()] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net viewstate session webforms

13
推荐指数
1
解决办法
1万
查看次数

setTimeout - 奇怪的行为

请考虑以下HTML:

<html>
    <head></head>
    <body>
        <input type="text" onblur="window.setTimeout('document.title += 2;', 0);" />
        <input type="button" onclick="document.title += 1" />
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

[ 0延迟演示,100ms延迟,150ms延迟 ]

并执行以下步骤:

  • 用户输入输入(焦点).
  • 用户单击该按钮.

现在,事件将按以下顺序发生:

  • 输入文字模糊事件.
  • 按钮单击事件.

在我得到的所有可访问的浏览器上测试:

document.title = '21' //Expected behavior
Run Code Online (Sandbox Code Playgroud)

但!在生产浏览器(Windows XP + IE 7)上,我得到:

document.title = '12' //Unexpected behavior
Run Code Online (Sandbox Code Playgroud)

我也尝试在我的本地机器(IE 10)上以IE 7模式模拟它,无法重现它.

这显然是我遇到的问题的简化示例.否则我可以简单地摆脱setTimeout.

在实际场景中,setTimeout调用实际上是由第三方脚本库(ASP.NET Dev Express组件)进行的.

除了这个问题的实际解决方案(我认为我可以处理),可以对这种行为应用什么解释?

更新:

使用表达式new Date().getTime()获取浏览器执行的每个步骤的时间.它发生如下:

1387369361417 //document.title += 1
1387369361433 //document.title += 2
Run Code Online (Sandbox Code Playgroud)

javascript settimeout

6
推荐指数
1
解决办法
315
查看次数

Oracle - Group by Cube - 由不同的列汇总

样本数据:

product_type |segment_type  |promotion_id  |promotion_value
-----------------------------------------------------------
Beer         |Regional      |1             |20
Beer         |National      |1             |20
Beer         |Regional      |2             |20
Beer         |National      |2             |20
Beer         |National      |3             |30
Beer         |Regional      |4             |40
Soda         |Regional      |5             |50
Soda         |National      |5             |50
Soda         |Regional      |6             |50
Soda         |National      |6             |50
Soda         |National      |7             |15
Soda         |Regional      |8             |20
Run Code Online (Sandbox Code Playgroud)

目标:获取按product_type和segment_type(多维数据集)分组的总促销价值,考虑不同的促销活动.请注意,单个促销可以到达一个或两个细分(区域和国家).

期望的结果:

product_type   |segment_type    |promotion_value
-------------------------------------------------
Beer           |                |110
Beer           |Regional        |80
Beer           |National        |70
Soda           |                |135
Soda           |Regional        |120
Soda           |National        |115
Run Code Online (Sandbox Code Playgroud)

我目前的SQL如下: …

sql oracle group-by distinct cube

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

如何以编程方式将事件处理程序添加到.NET按钮?

我正在尝试使用我在开发Web应用程序时可以考虑的最强大的OOP,但是在使用代码创建事件处理程序时,我遇到了问题.我确信这是一个相当简单的解决方案,我不断放弃,但我不知道下一步该尝试什么.下面是我一直在玩的一些测试代码,只是想按下按钮去做一些事情.

(想象一下,"int i"这一行有一个断点)

    Button b = new Button();
    b.Text = "Do Something";
    b.Attributes.Add("runat", "server");
    b.Attributes.Add("OnClick", "click");
    form1.Controls.Add(b);

    private void click(object sender, EventArgs e)
    {
        int i;
    }
Run Code Online (Sandbox Code Playgroud)

由于这是我的Page_Load创建的一个新按钮,我不能只是对XHTML进行硬编码.调试永远不会到达我的断点.CheckBoxes也没有取得任何成功.

.net c# asp.net event-handling

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