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.RegisterStartupScript("parent.window.location.href=parent.window.location.href;");其中括号内又引号中的内容即为javascript脚本。

2)在后台代码中编写如下类似的代码:

StringBuilder js = new StringBuilder();

js.Append("<script language="JavaScript">");

js.Append("window.showModalDialog("Asp.aspx?rowNum=" + rowNum + "", "scroll=no");");

js.Append("</script>");

Response.Write(js.ToString());即可调用。

11、ExtAspNet动态添加控件有哪些限制?

●解决方案:目前所知道的有一点:要么在Page_Load方法中加载控件,要么在Page_Init方法中加载控件。

12、向Panel中如何动态加载控件?

●解决方案:可以有以下几种添加方法,以添加Label为例:

其中页面中的相关代码如下:

<ext:PageManager ID="PageManager1" runat="server" />

<ext:Panel ID="Panel1" runat="server" BodyPadding="5px" EnableBackgroundColor="true"

ShowBorder="true" ShowHeader="true" Title="Panel">

<Items>

</Items>

</ext:Panel>

1)第一种添加方法是在Page_Load代码中编写添加的方法,如下:

ExtAspNet.Label lb = new ExtAspNet.Label();

lb.ID="cc";

lb.Text = "新添加Label";

this.Panel1.Items.Add(lb);

2)第二种添加方法是在Page_Init方法中编写代码,如下:

protected void Page_Init(object sender, EventArgs e)

{

ExtAspNet.Label lb = new ExtAspNet.Label();

lb.ID = "cc";

lb.Text = "新添加Labe";

this.Panel1.Items.Add(lb);

}

13、在动态添加零配件中,若使用Session,应该注意哪些问题?

Session中

1)有效的窗品包括:

(1)Session对象只在建立Session对象的窗口中有效。

(2)在建立Session对象的窗口中新开链接的窗口。

2)无效的窗口包括:

(1)直接启动IE浏览器的窗口。

(2)不是在建立Session对象的窗口中新开链接的窗口。

14、关于window的使用

1)window控件中的height和weight有什么用途,若不设置,如何控制其窗口的大小。

height和weight是设置window的高和宽,若不设置,效果与“ ”效果一样,是根据window中调用界面内容大小一样,自动适应其内容的大小。

2)window的窗体如何进行鼠标拖拽实现大小,如何实现?

实现窗体大小的属性是:EnableResize,为true时,可以拖拽大小,为false时,不可以实现拖拽大小,默认为false。

3)window中什么情况下出现滚动条,什么情况下不出现滚动条?

IE6浏览器:当window调用的界面内容大小超过window自定义的高和宽,就会出现滚动条,经过试验,发现调用的界面定义为98%就不会出现滚动条,大于98%,就会出现滚动条;小于window自定义的高和宽,就不会出现滚动条。

谷歌浏览器中:当window调用的界面内容大小超过window自定义的高和宽,就会出现滚动条;小于window自定义的高和宽,就不会出现滚动条:此滚动条是自动出现的。

4)IsModal属性是在父页面跳出window时,为false时,父页面可以进行点击功能,父页面可用;为true,父页面可以进行点击功能,父页面不可用。

15、在控件Grid中,若点击一行,显示详情,事件RowClick和事件RowCommand哪一个更合适?

●解决方案:事件RowCommand会更合适,原因:使用事件RowCommand,点击的时候可响应,而RowClick不好找鼠标的样式,有时候鼠标样式不对,即小箭头才可用,此时不能响应。

16、EXT母版页使用

1)使用region结合contentpanel实现

该方案首先是用region给母版页划分出区域,然后在划分好的region中加入contentpanel作为插入holder的容器达到做为母版页的实现。该种方案好处是,区域划分简便,有自适应能力。但有严重的bug就是在contentpanel中加入的form内控件位置都会认为是无效的地位设置,所以内部布局不能调整,是严重的弊端。

2)使用region结合iform实现

该方案首先需要用region给母版页划分区域,然后再划分好的region中加入iform,该方案放弃了使用holder的想法,是由其他地方的region中的超链、按键等传递url给作为放置子页的regin中的iform实现页面的跳转。该方案的好处的是实现简单,有自适应能力。但是依然有严重的弊端,因为放置子页的是一个iform所以当页面过大显示不全时,滚动条会出现在iform中而不是出现浏览器的滚动条;而且由于是iform实现,所以在页面跳转中的实际跳转位置只是iform的位置,当页面真的跳转到其他页面的时候,“母版页”内容是不能跟着跳转的。

3)使用ASP母版页实现

实现方法完全与之前不使用ext控件时一样,只不过需要在母版页中加入Page信息。该方案没有致命弊端。但是对于自适应需要较上面两个方案相对复杂的实现。划分区域也需要较繁琐的方法。大体上的定位方法是通过div+css来实现。

4)母板页的自适应及区域划分

解决母板页自适应的问题,使用最多的方法就是当页面的宽度小到一定值的时候就让母板页内内容变为定值,就可以实现自适应,避免当页面变小时页面内容混乱的问题。说道这里就不得不说到区域划分的问题了,主体上的思路都是从上至下分为3个div这个毋庸置疑,关键是存放2级菜单和子页面的中间div的横向划分。如果是将中间div分为3块的结构,就意味着最左和最右的div宽度将成为定值,中间的div实现自适应,然后当页面小到一个定值的时候中间div变为固定宽度,实现母板页自适应。分为3块结构的弊端就在于,当子页面宽度比较大的时候,就会向下移动到最底端然后侵占最右div显示内容下面的空白区域显示。所以当子页面宽度比较大的时候就要选择2块划分。2块划分与3块划分的区别就在于是否存在最右的div。这样就腾出了显示较宽子页面的空间。实现代码详见贝克系统母板页代码,在此只列出母板页css部分如下:

<style type="text/css">

*

{

margin: 0;

padding: 0;

font-size: 1em;

}

#top

{

min-width: 872px;

_width: expression_r((document.documentElement.clientWidth||document.body.clientWidth)<872 ?"872px":"auto");

}

#main

{

border: 1px solid #A5CF3D;

height: 400px;

margin-left: 203px;

overflow: visible;

}

#left

{

border: 1px solid #A9C9E2;

height: 400px;

width: 200px;

position: absolute;

left: 0px;

}

#dyhead

{

border: 2px green;

padding: 2px;

height: 80px;

}

#dyfoot

{

border: 1px dotted green;

padding: 0;

text-align: center;

margin: 1px;

}

#center

{

margin: 1px;

padding: 0;

border: 0px solid #FF0000;

}

</style>

其中min-width: 872px; //非ie6

_width: expression_r((document.documentElement.clientWidth||document.body.clientWidth)<872 ?"872px":"auto");//ie6 使用

就是计算并规定的最小宽度,以上面代码为例当宽度小于872的时候母板页就会变为固定宽度页面。

17、页面如何嵌套入母板页实现母板页的自适应?

在extasp的控件中,panel类的容器控件是可以实现在母板页中嵌套并实现在母板页中的自适应的,所以一个子页面如果只是使用了panel类的控件,那么就不必太在意在母板页中的自适应问题了,只需要设置最外面panel的autowidth属性,为true。但是如果在子页面中出现了form类控件就要注意了,form类控件在母板页中是不能实现自适应的,因此如果要使用form类就必须规定好form的width属性,不能超过母板页中规定的最小宽度。以上面母板页中css代码为例,此时页面最小宽度为872,那么减去最左边div的宽度200和两者间的距离10,此时form的宽度最大值为662px,超过这个值,子页面就会超出母板页宽度。

18、容器控件自适应局限说明

容器控件存在自适应局限的原因是,在容器控件中加入了以百分数为限定条件的位置宽度属性,百分数设定宽度并不是大家认为的按照最外层容器的自动宽度的百分比来规定宽度的,而是给外层容器一个固定宽度来实现的,并且这个宽度值的大小如分辨率有关。因此,容器控件要使用百分比规定宽度属性的话,就必须给外层容器规定宽度。

【ExtAspNet学习笔记】ExtAspNet控件库中常见问题的更多相关文章

  1. WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件

    在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项 ...

  2. [Android学习笔记]组合控件的使用

    组合控件的使用 开发过程中,多个UI控件需要协同工作,相互交互之后,才可完成一个完整的业务需求,此时可把这些控件封装成为一个整体,相互之间的交互逻辑封装其中,外部调用可无需关心内部逻辑,只需获取处理后 ...

  3. [WPF 学习] 3.用户控件库使用资源字典的困惑

    项目需要(或者前后端分离的需要),前端我使用了用户控件库,由后端用代码加载和控制. 然而用户控件库没法指定资源字典,于是在用户控件的xaml文件里面手工添加了资源字典 <UserControl. ...

  4. 学习笔记-menusript控件中条目权限设置使用

    在做一个小程序的时候,偶然发现了使用menusript控件做权限设置的方法,仅此标记,以供参考. 首先创建一个实例:testuseright.sln, 在项目文件里创建两个窗体:Form1.cs和us ...

  5. iOS学习笔记——基础控件(上)

    本篇简单罗列一下一些常用的UI控件以及它们特有的属性,事件等等.由于是笔记,相比起来不会太详细 UIView 所有UI控件都继承于这个UIView,它所拥有的属性必是所有控件都拥有,这些属性都是控件最 ...

  6. Python:GUI之tkinter学习笔记1控件的介绍及使用

    相关内容: tkinter的使用 1.模块的导入 2.使用 3.控件介绍 Tk Button Label Frame Toplevel Menu Menubutton Canvas Entry Mes ...

  7. ios 学习笔记之控件属性

    1.文本框 设置密码属性:Secure Text Entry 勾选; 设置文本框带清除属性: Clear Button =Is always visible;  默认是不带清除属性:Never app ...

  8. jQuery学习笔记(控件位置定位、尺寸大小的获取等)

    想做一个幽灵按钮出来,效果大概如下图: 当点击按钮的时候,会有四根线条从四个方向飞入,经历从“无-有-无”的闪入过程. 那么我的设计想法是,先在HTML中定义一个按钮,然后在jQuery中设计按钮点击 ...

  9. IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法

    UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等). 1.特有的特 ...

随机推荐

  1. EntityFramework之一对多关系(三)

    上篇介绍了一对一关系,下面介绍下一对多关系代码编写. 1.新建model实体,Product是产品类,Order是订单,一个产品对应多个订单 public class Product { public ...

  2. [LOJ6277]数列分块入门 1

    题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问$A_r$的值.思路: 分块. 对于整块的数据打标 ...

  3. k8s学习

    k8s简介 在学习k8s之前,相信大家和我一样,肯定都学习和使用过docker容器,并且对容器技术有了一个基本的认识.引用张磊老师的总结:其实一个"容器",实际上是一个由Linux ...

  4. Java杂谈1——虚拟机内存管理与对象访问

    1.理解JAVA虚拟机的内存管理 运行时的数据区 从java虚拟机的内存分配来看,一个java程序运行时包含了如下几个数据区: a)     程序计数寄存器(Program Counter Regis ...

  5. 用字符串连接SQL语句并用EXEC执行时,出现名称 '‘不是有效的标识符

    原文:用字符串连接SQL语句并用EXEC执行时,出现名称 ''不是有效的标识符 用字符串连接SQL语句并用EXEC执行时,出现名称 '这里是字符串连接的一条SQL语句‘不是有效的标识符 才发现,在写e ...

  6. Asp.net+EF

    EFRepositoryBase using System; using System.Collections.Generic; using System.Data; using System.Dat ...

  7. C#拦截系统消息的方法-Application.AddMessageFilter

    C#拦截系统消息的方法Application.AddMessageFilter Application.AddMessageFilter这个方法可以接收系统发出的消息: 首先定义一个类,继承IMess ...

  8. c++ comment

    一.匈牙利命名法[Hungarian]: 广泛应用于象 Microsoft Windows 这样的环境中. Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一 位能 ...

  9. Filter及FilterChain的详解

    一.Filter的介绍及使用 什么是过滤器? 与Servlet相似,过滤器是一些web应用程序组件,可以绑定到一个web应用程序中.但是与其他web应用程序组件不同的是,过滤器是"链&quo ...

  10. tar命令解压缩出错

    [root@zhoucentos share1]# tar zxvf otp_src_19..tar.gz gzip: stdin: not in gzip format tar: Child ret ...