FineUI 官方论坛

标题: 封装控件后TextChanged事件报错 [打印本页]

作者: Tiger    时间: 2013-9-11 13:03
标题: 封装控件后TextChanged事件报错
为了简化操作,我对三石的控件进行了封装,但是报图上的错误

function anonymous(values, parent, xindex, xcount) {
with(values){ return !enabled; }
}

function anonymous(values, parent) {
with(values){ return values; }
}

function anonymous() {
var x0=X('frmAdd_ctl00_txtUserAlias');X('').x_updateTpls("");X.state(x0,{"Text":"21","Text_GZ":""});window.X.alert('ok');
}



作者: Tiger    时间: 2013-9-11 13:34
问题是封装的控件中如果有Grid,并且设了Datasource,再做过databind()后就出错,职果只是定义Grid的字段,不会出这个问题
作者: Tiger    时间: 2013-9-11 13:48
        protected void Page_Load(object sender, EventArgs e)
        {

            DataAccessor data = new DataAccessor();
            string sql = "select * from tab";
            DataTable table = data.ExecuteReader(sql).Tables[0];

            FineUI.Grid grid = new FineUI.Grid();
            grid.DataSource = table;
            FineUI.BoundField field = new FineUI.BoundField();
            field.DataField = "TNAME";
            grid.Columns.Add(field);
            //grid.DataBind();

            FineUI.TextBox box = new FineUI.TextBox();
            box.AutoPostBack = true;
            box.TextChanged += new EventHandler(box_TextChanged);

            FineUI.FormRow row = new FineUI.FormRow();

            row.Items.Add(box);
            row.Items.Add(grid);
            frmAdd.Rows.Add(row);
         
        }

        void box_TextChanged(object sender, EventArgs e)
        {
            FineUI.Alert.Show("OOO");
        }

好像与我的封装没有关系,我现在没用任何封装,全是FineUI自己的控件也不行呢,请大师们指点
作者: Tiger    时间: 2013-9-11 13:48
上例中 grid.DataBind();  如果注释去掉就报错
作者: sanshi    时间: 2013-9-11 14:10
没看明白,不过这里是找不到表格,x_updateTpls是表格实例的方法:
  1. X('').x_updateTpls("");
复制代码

作者: Tiger    时间: 2013-9-11 14:19
是的,我还发现 如果 PageLoad里写上 if (!Page.IsPostBack) 这种判断,事件都没有响应了,如果不加,可以响应,但是显示多执行了一次,反正现在有表格搅着就不行
三石看一下我的代码,没有封装,只要换一个Datasource就可以看到报错了  谢谢
作者: Tiger    时间: 2013-9-11 14:22
我放在 Page_Load  Page_init  OnInit 里都不行
作者: sanshi    时间: 2013-9-11 14:38
动态创建控件放在 Page_Init 中,仔细看看这篇博文:http://www.cnblogs.com/sanshi/archive/2012/11/19/2776672.html
作者: Tiger    时间: 2013-9-11 14:44
我发现 Grid直接在页面上托进去,C#里只负责赋值,就一切正常,如果是在 C#里创建的Grid再加给进到窗体里,就不行了,也就是Grid的创建地方不一样,效果不同,谁给我讲一下,我如果必须用C#k创建的话, 应该怎么调整下?
谢谢
作者: Tiger    时间: 2013-9-11 14:58
三石 ,我试了下,你这个例子非常好,但是也是前提是Grid是直接放在Aspx里的,我的做法是直接在C#里new出来的,会有这个差异,受累帮看看  谢谢
作者: Tiger    时间: 2013-9-11 21:54
发现了一点,需要先把Grid添加到this.Controls.Add(grid)   之后再绑定数据就可以了  如果先绑定后添加,就有问题
希望三石帮看看  如果能做到顺序无关就更好了




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4