DataGrid开发中应注意的一些小技巧

来源:互联网 发布:手机挂号软件 编辑:程序博客网 时间:2024/04/30 12:45
 
今天我们来讨论一下在DW开发ASP.Net中的一些小技巧和方法。
虽然我们在前三篇中已经讲一些基本的操作,但在开发过程中有很多的技巧问题应该值得我们注意,下面我们开始:
1.DataGrid中添加自动编号。
有时候我们的DataGrid列表的第一列来一个自动编号,除了读取数据库的Id字段,是否还有其他方式?答案是肯定的,我们可以通过DataGrid的ItemIndex来实现。众所周知,ItemIndex是DataGrid中记录索引号,也就是从0开始的一个数据,自然能够合理的座位每一行的编号数值,程序段如下:
<Columns> 
                  <asp:TemplateColumn HeaderText="" ItemStyle-Width="50"> 
                    <ItemTemplate> 
                        <%# Container.ItemIndex+1 %> 
                    </ItemTemplate> 
                  </asp:TemplateColumn> 
    </Column>

简单介绍一下这个代码:
A>  简单说就是DataGrid的一个模版绑定列。
B>  <%# Container.ItemIndex+1 %>就是显示的Index数据;”+1”的意思是本来ItemIndex从0开始索引,”+1”就是从1开始索引,我们得到的结果就是“1、2、3……Index”呵呵:P

2.数据的截取显示或者替换显示问题问题。
  有时候我们在数据库中的某些数据显示到叶面上时候并不是一些直接的数据:比如性别列中我们用0、1表示男女,在页面中我们必须要显示“男、女”;再比如我们的新闻列表,如果标题过长,我们向截取其中的某一部分来显示等等;当然我们可以根据自己的需要更加灵活自如的制作出自己的效果,废话少说,进入主题:
如果我们数据字段”sex”为”bool”类型,我们想显示出来“男、女”:
<%# (bool)DataSe12.FieldValue("sex", Container) ? "男" : "女" %>

说明一下,(bool)是.net中隐式转换方法;DataSet1.FieldValue("sex",Container)是DW特有的数据绑定格式;用到了三元操作符 “? :”。
如果我们只想显示新闻标题的前20个字符,可以这样做:
<%# DataSet1.FieldValue("title",Container).Length>20 ?DataSet1.FieldValue("title",Container).Substring(0,19)+"…" : DataSet1.FieldValue("title", Container)
%>

说明,同样是小技巧,用Length方法读取绑定字段的长度;用Substring()来截取字符;三元符就是用来判断字符串是否超过20字符~~

3.在ASP.Net中加入JS代码。
由于ASP.Net安全性的考虑不允许直接插入JS代码,我们需要JS时候要采用一些小技巧:
A> 页面加载时直接Alert:
if(!Page.IsStartupScriptRegistered("delAlert"))
            {
              Page.RegisterStartupScript("delAlert",@"<script language='javascript'>alert('一些文字');</script>");
            }


*说一下,这段话最好就是放在某一个过程函数中。直接放到Page_Load()事件中也是可以的,呵呵。务必要注意的就是此代码运用的时机。

B>微软通用的属性添加:
实际上.net里面有固有的属性添加方法,就是“控件.Attributes.Add(“事件”,”执行内容”)”。这一属性可以广泛地用在“删除提示”、“错误提示”、“返回提示”等多种场合。举例如下:
//Page_Load()过程中

Btn1.Attributes.Add("onclick","Javascript:alert('你单击了按钮')");

//页面文件标签

<asp:button id="Btn1" text="单击" runat="server" />

*说一下,这个属性在DataGrid和DataList、Repeater控件中同样适用!

C>单击出现Alert确定的简单方法<div>。
其实这算一个小技巧,又是一种不是方法的方法。举个例子,我们要单击Label1控件的时候出现提示“你确定吗?”应该怎么做?看代码:
//页面文件标签

<div onclick="alert('你确定么?');'>
<asp:Label id="Label1" text="测试" runat="server" />
</div>

//或者:

<div onclick="if(!confirm('你确定么?')) return false;">
<asp:Label id="Label1" text="测试" runat="server" />
</div>

*怎么样,是不是很简单,活用了 ,呵呵

D>Response.Write()中输出JS
需要用到正则匹配,就是大家知道的正则表达式拉。不好解释,举个例子算了:
// 在DW中

<%#DataSe12.FieldValue("tiltle",Container).Length>0?"<a onclick=window.open(/'a.aspx/');>"+ DataSe12.FieldValue("tiltle", Container)+"</a>" : "" %>

// 在VS.Net中

<%DataBinder.Eval(Container,"DataItem.title","<a onclick=window.open(/'a.aspx/');>{0}</a>") %>

//Response.Write()中

<%
  string text="<script language='javascript'>alert('ok!');</";
  text=text+"script>";
  Response.Write(text);
%>


4.其他一些DW中应注意的小问题:
  其实在开发DW项目的时候有很多小技巧会帮助你大大提高工作效率:
合理运用Web.Config文件。我们可以把一些常用的属性全部都配置到该文件中去,例如数据链接等,会提高效率;
合理使用DataList和DataGrid控件。由于DataList相对自由,可以自定义许多简单样式,所以列表时推荐使用DW的DataList控件。
RePeater的使用。DataGrid虽然带有分页功能但是很死板,自定义分页又很麻烦。这时候和不使用RePeater呢?DW的数据绑定中很轻松的就可以实现分页功能,而且只需要在面板中设定,并不需要些代码……
尽量少的重复打开数据链接。如果在DW中设置了数据链接。那么在页面加载前链接是打开的,数据读取完毕后DreamweaverCtrls.Dll组件将会把链接关闭;如果你为了同时实现其他的功能在Page_Load()中 或其他函数过程中再次定义数据链接,可能造成资源的浪费,但很多时候又不得不这么做……这可能就是DW的一个弊端吧……
最后一点建议,学会去学习DW自动生成的一些代码中的精华。往往DW自动生成的一些代码都是很优化、很统一格式代码,对我们的学习很有帮助,所以我建议在有时间的时候多多切换到查看源代码模式看一下DW到底生成了些什么.net程序,呵呵,相信对你有帮助的!

好了,今天就说到这里,有什么问题  欢迎在2yup.com论坛上提出,或者直接去我们的Blog: http://www.hotide.net/blog/
Mail:  zidone.net@sina.com
MSN:  zidone@msn.com
广告:  明天我们用一个完整的留言本例子,来结束我们的DW+ASP.Net开发教程~~
ReTech 小组 转载请指明出处~~
原创粉丝点击