我正在开发一个使用smart gwt 2.4的小型应用程序。我选择了smart gwt,而不是其他特定于html的RIA,因为它有丰富的用户界面,并避免了跨浏览器的问题。我的应用程序中有2个页面。最初,用户在页面1中输入的详细信息用于获取必须在页面2中显示的数据,从那时起,必须进行的任何更改都可以在页面2本身中进行。用户不需要返回到页面1来获取新的数据集。1)现在,如何在页面之间导航。我已经将这些页面定义为两个独立的模块。我需要将数据从页面1传递到页面2。有没有有效的方法? 2)在我的一个页面中,我定义了两个自动完成组合框。其中一个组合框的数据将在加载时获取,第二个组合框的数据取决于第一个组合框的值。我尝试为第一个组合框添加change和changed事件侦听器,但每种字母类型都会触发这两个事件。一旦用户选择了值,我就需要获取数据。
public void onModuleLoad()
{
final ComboBoxItem category = new ComboBoxItem("categoryName", "Category");
category.setTitle("Select");
category.setChangeOnKeypress(false) ;
category.setType("comboBox");
category.setWidth(250);
category.setIcons(icon);
category.setChangeOnKeypress(false);
final ComboBoxItem subCategory = new ComboBoxItem("subCategoryName", "Sub Category");
subCategory.setTitle("Select");
subCategory.setType("comboBox");
subCategory.setWidth(250);
subCategory.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler()
{
@Override
public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent event)
{
// call to servlet[url] to get the sub categories for the selected category.
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, "url"+ selectedCategoryName);
try {
requestBuilder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response)
{
String xmlText = response.getText();
// Code to handle the received response.
}
@Override
public void onError(Request request, Throwable exception)
{
exception.printStackTrace();
}});
} catch (RequestException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
});
category.addChangeHandler(new ChangeHandler()
{
@Override
public void onChange(ChangeEvent event)
{
if(null!=event.getValue() && event.getValue()!="")
{
selectedCategoryName = event.getValue().toString();
System.out.println(selectedCategoryName);
}
}
});
}这里我有一个组合框类别,它的值将在加载时获取。当用户通过在组合框中键入来选择类别时,该控件通过在下拉列表中显示匹配值来提供帮助。每按一次键,事件就会触发一次。我已经添加了一个syso来打印键入的值。我需要抓取子类别时,只有当用户完成选择的类别。
任何指针都会非常有用。谢谢
发布于 2011-05-05 14:20:11
关于你的第二个问题:根据你的需要,我认为你可以按照这个link实现模块。或者,如果您想通过处理更改事件来自己实现它,要在每次按键时停止触发更改事件,您可以使用以下命令:
comboBoxItem.setChangeOnKeypress(false);https://stackoverflow.com/questions/5885936
复制相似问题