c#keydown代码不起作用

时间:2016-07-19 14:22:54

标签: c# asp.net .net webforms

我有一个用于按关键字进行研究的TextBox。我有复选框来过滤结果,还有一个图表来显示表格中关键字的出现。单击为其创建的按钮即可完成搜索,如果单击“输入密钥”,也可以进行搜索。问题是,如果我决定选中2个复选框并单击Enter,则不进行研究,或者如果我更改关键字并再次单击Enter,则不会生成图表的结果。每当我点击按钮或回车时,我都希望它能够工作。

我正在使用KeyDown,就像我在互联网上看到的一样,但它并没有改变任何问题,也没有错误。

我的代码:

use std::marker::PhantomData;
use std::collections::HashMap;

pub struct OrderBook<T: PriceLevel, U: PriceLadder<T>> {
    levels: U,
    phantom: PhantomData<T>,
}

impl<T: PriceLevel, U: PriceLadder<T>> OrderBook<T, U> {}

type HashBook = OrderBook<LinkedHashLevel, HashmapLadder<LinkedHashLevel>>;

pub trait PriceLevel {
    fn new() -> Self where Self: Sized;
}

pub trait PriceLadder<T: PriceLevel> {
    fn new() -> Self;
}

pub struct LinkedHashLevel {
}

impl PriceLevel for LinkedHashLevel {
    fn new() -> Self {
        LinkedHashLevel {}
    }
}

pub struct HashmapLadder<T: PriceLevel> {
    levels: HashMap<u64, T>,
}

impl<T: PriceLevel> PriceLadder<T> for HashmapLadder<T> {
    fn new() -> Self {
        HashmapLadder { levels: HashMap::new() }
    }
}

fn main() {}

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

好的,我发现了问题,我没有提到我正在使用更新面板。 所以这是代码为我工作:

$('#tbSearch').keydown(function (e) {
    var key = e.which;
    if (key == 13)  // the enter key code
    {
        //your code
    }
});

使该代码适用于updatePanel:

//On UpdatePanel Refresh.
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
    prm.add_endRequest(function (sender, e) {
        if (sender._postBackSettings.panelsToUpdate != null) {

            $('#tbSearch').keydown(function (e) {
                var key = e.which;
                if (key == 13)  // the enter key code
                {
                  // your code
                }
            });
         }
    });
};

答案 1 :(得分:0)

在您的文本框中,只需

  • 添加属性autopostback =“true”
  • 添加属性OnTextChanged =“btnSearch_Click”

并且它可以在没有JQuery的情况下执行您想要的操作

- &GT; autopostback:触发事件时回发到服务器

- &GT; OnTextChanged:当你离开文本框(或按回车键)时,事件被触发并转到你的搜索功能