ExtAspNet控件库中控件使用时常见问题
转载自:http://blog.sina.com.cn/s/blog_60c3c90f0100lmkp.html
1、在Grid控件中添加CheckBoxField控件,选择一行时,如何获取选择的CheckBoxField所对应记录的唯一标识值?
●解决方案:
在前台Grid控件中,
添加“<ext:CheckBoxField ColumnId="myCheckBoxField" Width="60px" RenderAsStaticField="false" DataField="MyCheckBox" CommandName="CheckBox1"HeaderText="AutoPostback" />”代码,后台添加
“protected void gr_RowCommand(object sender, ExtAspNet.GridCommandEventArgs e)
{
if (e.CommandName == "CheckBox1")
{
ExtAspNet.CheckBoxField myCheckBoxField = gr.FindColumn("myCheckBoxField") as ExtAspNet.CheckBoxField;
// .取得选中行的索引值
int rowChecked = myCheckBoxField.ColumnIndex;
// .取得选中行的主键值
long SelectedRowKey = Convert.ToInt64(gr.DataKeys[rowChecked][0]);
}
}”
2、在页面加载时,如何执行一段JavaScript的代码?
●解决方案:
1)在Grid控件的PreRowDataBound事件中调用JS函数。
2)在Grid控件的RowDataBound事件中调用JS函数。
3)在Page_Load事件中,使用Attributes.Add为控件添加事件。
例子:
this.MenuTreeView.Attributes.Add("onclick", "OnTreeClick(event)");
添加点击事件,调用OnTreeClick函数。
4)在Page_Init事件中,也可以使用Attributes.Add为控件添加事件。
5)在后台,使用ExtAspNet.PageContext.RegisterStartupScript可以添加执行JS函数。
例子:
string showSourceScript = "(function(){getMainWindow().loadJS('data/source/" + fileName + "');}).defer(100);"; ExtAspNet.PageContext.RegisterStartupScript(showSourceScript);
6)在ExtAspNet控件中,在页面加载时,自动加载并执行JavaScript语句,function onReady()就是JavaScript函数,通过
“afterBuilder.Append("if(typeof(onReady)==='function'){onReady.call(window);}");”语句自动调用JavaScript函数。
7)在Asp控件中,在后台中,如果与页面不交互,可以使用“Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "alert('已使用!'); ", true);”; 交互,使用“ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1, this.GetType(), "MyScript", "alert('已使用!'); ", true);”。
3、动态添加控件时,使用HiddenField,HiddenField与ExtAspNet的Lable控件有什么区别?
●解决方案:HiddenField是隐藏输入框的服务器控件,它可以保存不需要显示在页面上的且对安全性要求不高的数据;Lable是一个静态控件。
4、出现的错误:本次页面请求失败;原因以及什么情况下会出现这个问题?
●解决方案:
1) 调试时间过长的情况下,不论有错还是没错就会出现此种情况,时间约是2分钟以后;解决方案:重新执行,不超出出错时间即可。
2)在向数据库中插入数据时,所要插入的数据参数个数与类sqlhelper中的个数不相同或者名称不一样,就会出现这种情况,问题是由于数据库中新添加一个字段,存储过程没有添加,导致类sqlhelper中commandParameters不能与数据库相对应;解决方案:在存储过程中添加此字段的语句。
3)JavaScript中语句有问题时,也会出现此种情况;解决方案:调试JavaScript语句。
4)当Page_Load函数中没有任何执行语句时,会出现此种情况。
5)在操作执行过快的过程中,由于页面反映不过来,导致此种情况出现;解决方案:重新刷新页面。
5、如何实现控件中的滚动条?
●解决方案:如果需要添加滚动条的控件不是自适应,就会在内容溢出时自动加入滚动条,如果不出现滚动条,就需要用控件的AutoScroll属性来控制是否有滚动条。
6、ContentPanel中可以使用哪些控件?
●解决方案:Panel控件中只能存放ExtAspNet本身带的控件,ContantPanel中可以存放:ExtAspNet本身的、asp.net的控件以及HTML的控件都可以存放且显示,但是ContentPanel缺少Layout属性,无法对其进行布局。
7、EnableAjax与EnablePageLoadIng有什么具体的效果,如何保证页面的不回刷?
●解决方案:EnableAjax属性指控件是否启用ajax。
1)在默认的情况下,页面中PageManager控件(每个页面拥有一个)的EnableAjax属性默认为true。此时若将控件的EnableAjax属性设置为false,当该控件在回刷(假设该控件可以回刷)时,将会引发整个页面刷新,如果将其设置为true,则控件在回刷的时候,只会引发页面的局部刷新。
2)如果将PageManager控件的EnableAjax属性设置为false,则无论将可回刷的控件的EnableAjax设置为什么,当它在回刷的时候,均是整个页面刷新。
8、EnablePageLoading属性有什么作用。
●解决方案:该属性为PageManager控件所有,用于表示是否启用页面加载标示。当将其设置为false时,页面回刷时,右上角显示正在加载字样。如将其设置为true时,页面回刷时,右上角不显示下在加载字样。
9、如何保证页面的不回刷?
●解决方案:可以将PageManager控件的EnablePageLoading属性设置为false,但这样页面也是回刷,只是没有相应的显示效果而已。
10、后台调用JavaScript的方法?
●解决方案:到目前为止可以通过以下两种方式:
1)
ExtAspNet.PageContext.Regist