自定义Ext.Net组件动态初始化
问题描述:
我想创建一个自定义组件。组件应该在代码后面动态初始化。该组件提供了一个包含其他组件的自定义窗口,如datefields,下拉字段等。我从Ext.Net.Window派生出我的类并添加了简单的DateField。日期应该由服务器上的按钮单击使用(日期不应该通过DirectMethod参数传递)。当我添加这个组件来标记它完美的作品。但是当我在后面的代码中添加窗口时,datefield的值在服务器调用后未设置。 我正在通过“Controls.Add(mywindow)”在OnInit事件的生命周期中创建窗口。如果有人能给我一个提示,那将是很棒的。在这里我的窗口代码(onExecuteButtonClick只是调用直接法和隐藏窗口):自定义Ext.Net组件动态初始化
protected override void OnInit(EventArgs e)
{
var myWindow = new WindowFilterComponent()
{
Hidden = false,
Width = 500
};
myWindow.ID = myWindow.ID + "MyComponent";
Controls.Add(myWindow);
base.OnInit(e);
}
答
我想窗口是外部呈现:在OnInit事件在我的页面中的使用率
public sealed class WindowFilterComponent:Window
{
private const string Script = "MyProject.JavaScript.src.WindowFilterComponent.js";
public override string InstanceOf
{
get
{
return "MyProject.Filter.WindowFilterComponent";
}
}
public override string XType
{
get
{
return "windowfiltercomponent";
}
}
private Button _btnExecute;
private Button _btnCancel;
private DateField _dateField;
protected override void OnInit(EventArgs e)
{
AutoHeight = true;
_btnExecute = new Button("Execute Export");
_btnExecute.Listeners.Click.Handler = string.Format("#{{{0}}}.onExecuteButtonClick()", ID);
_btnCancel = new Button("Cancel");
_btnCancel.Listeners.Click.Handler = string.Format("#{{{0}}}.onCancelButtonClick()", ID);
Buttons.Add(_btnExecute);
Buttons.Add(_btnCancel);
_dateField = new DateField();
Items.Add(_dateField);
base.OnInit(e);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (ExtNet.IsAjaxRequest || Page.IsCallback) return;
ResourceManager.GetInstance().AddDirectMethodControl(this);
}
[DirectMethod(ShowMask = true)]
public void ExecuteClick()
{
var date = _dateField.SelectedValue;
}
}
现在表格。
请更换
Controls.Add(myWindow);
与
Form.Controls.Add(myWindow);
此外,我会建议设立的submittable字段(的DateField你的情况)明确标识,以确保从POST数据的ID密钥将匹配服务器上的控件的ID。
+0
非常感谢你:)我很高兴地说...解决问题的方法:) – xandi1987 2014-10-01 12:26:23
如果您需要一些代码,请让我知道:) – xandi1987 2014-09-28 13:35:03
可以显示您的班级派生窗口 – sakir 2014-09-28 13:36:17
我已经将班级添加到问题 – xandi1987 2014-09-29 05:09:49