电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
关于DataGrid Web控件的热门问题__连载之六-.NET教程,数据库应用
作者:网友供稿 点击:57
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
  
编辑模式下显示一个drop-down list 
这里将提供给用户的一个常用需求——一个某行处于编辑状态下的drop-down list。举例来说,一个datagrid可能显示一个书籍清单,其中包括每本书的类别,当用户编辑一条书籍记录时,可能要为该书指定一个不同的类别,理想情况下,他们可以从drop-down list中选择可能的类别值,比如“小说”、“生物”或者“参考书目”。 
显示一个drop-down list需要在datagrid中设定一个模板列。典型的情况是:项模板包含了一个控件,比如一个数据绑定的label控件来显示记录中某个字段的当前值。然后,向编辑项模板中添加一个drop-down list,在vs中,你可以通过datagrid的属性生成器添加一个模板列,然后通过“编辑模板”移除编辑项模板中默认的textbox控件,并拖入一个drop-down list控件,你还可以在html视图下添加模板列。 
在创建了含有drop-down list的模板列后还有两个任务:首先,要产生一个列表,其次要设定列表中的预选项。举例来说,如果本书的类别设为“小说”,当drop-down list显示时,往往需要“小说”是预选的(预选一个项并不是在所有情况下都要讨论的问题)。 
可以有多种生成drop-down list的方法。下面的几个例子说明了三种方式:使用静态项;使用dataset中的记录集合;使用datareader直接从数据库中读取信息。 
l         静态项:在drop-down list中显示静态项不需要绑定数据到控件。你可以很简单地在控件的项集合中定义项。在vs中,可以通过属性窗口中的items属性触发项集合编辑器,也可以在html视图中编辑项。
下面是一个显示模式下显示类别的模板列和编辑模式下类别的静态列表的完整定义。项模板包含了一个label控件,其text属性被设置为当前记录的“genre”(类别)字段,编辑项模板中的静态项定义高亮显示。
<asp:templatecolumn headertext="genre"> 
    <itemtemplate> 
      <asp:label id=label4 runat="server" 
         text=’<%# databinder.eval(container, "dataitem.genre") %>’> 
      </asp:label> 
    </itemtemplate> 
    <edititemtemplate> 
      <asp:dropdownlist id="dropdownlist2" runat="server" width="172px"> 
         <asp:listitem value="fiction">fiction</asp:listitem> 
         <asp:listitem value="biography">biography</asp:listitem> 
         <asp:listitem value="reference">reference</asp:listitem> 
      </asp:dropdownlist> 
    </edititemtemplate> 
</asp:templatecolumn> 
l         dataset
如果你想要在drop-down list中显示的数据处于一个dataset里,那么你可以采用通用的数据绑定方式。下面是它的声明语法。drop-down list绑定了数据集dsbooks1中的类别表。数据绑定的设置高亮显示。
<asp:templatecolumn headertext="genre (dataset)"> 
    <itemtemplate> 
      <asp:label id=label3 runat="server" 
          text=’<%# databinder.eval(container, "dataitem.genre") %>’> 
      </asp:label> 
    </itemtemplate> 
    <edititemtemplate> 
      <asp:dropdownlist id=dropdownlist4 runat="server" 
         datasource="<%# dsbooks1 %>" datamember="genre" 
         datatextfield="genre" datavaluefield="genre" width="160px"> 
       </asp:dropdownlist> 
    </edititemtemplate> 
</asp:templatecolumn> 
l         datareader
你也可以直接从数据库生成drop-down list。这种方式更为复杂但效率也更高。原因在于只有在需要的时候才去读数据库。
实现的一个相当简便的方法是利用web窗体数据绑定表达式。尽管最常用的是在数据绑定表达式中调用databinder.eval 方法,但事实上你可以使用该页任何可用的public成员。下面的例子告诉你如何创建一个函数来创建、填充以及返回一个datatable对象,drop-down list可以对它进行绑定。
这种情况下,你需要能够执行一个能得到你需要的记录集的数据命令。比如说,你可能需要定义一个command,并把它的commandtext属性设为“select * from genres”。为了简化例子,假设在页面中已经有了一个connection对象和一个command对象。
由创建页面中的一个共有函数开始。这个函数创建了一个datatable对象并定义了你需要的列集合。然后打开连接,执行command命令来返回一个datareader,并且遍历datareader,复制数据到datatable,最后,将datatable作为该函数的返回值返回。
下面说明了如何实现。该例中返回的datatable中只有一列(“genre”)。通常只需要一个列来生成drop-down list。如果需要将其text和value设成不同的值,就需要两个列。
public datatable getgenretable() 

    datatable dtgenre = new datatable(); 
    if(application["genretable"] == null) 
    { 
      datarow dr; 
      datacolumn dc = new datacolumn("genre"); 
               dtgenre.columns.add(dc); 
      this.sqlconnection1.open(); 
      system.data.sqlclient.sqldatareader dreader = 
          this.sqlcommand1.executereader(); 
      while(dreader.read()) 
      { 
          dr = dtgenre.newrow(); 
         dr[0] = dreader[0]; 
         dtgenre.rows.add(dr); 
      } 
      this.sqlconnection1.close(); 
     } 
   else 
   { 
      dtgenre = (datatable) application["genretable"]; 
   } 
   return dtgenre; 

   注意:该函数将它创建的datatable保存于application态,由于这里的datatable就象一个静态的查询表,所以并不需要在每次一个不同行转为编辑模式时都重新读取它,而且,由于同一个datatable可以被多用户使用,可以将其保存在全局的application态而不是保存在根据用户不同而不同的session态。 
       下面是模板列的声明,你会发现这与绑定dataset中表的语法非常相似,唯一的真正区别就是数据源的绑定调用的是你自己的函数。这种技术的稍有不利之处在于,在vs中,得不到太多的设计类型服务。由于是通过代码定义datatable来绑定,vs不会提供任何方式来对datamember、datatextfield和datavaluefield属性进行设置,需要你自己来确定这些属性,使它们与你在代码中创建的成员名字相匹配。 
<asp:templatecolumn headertext="genre (database)"> 
   <itemtemplate> 
      <asp:label id=label1 runat="server" 
          text=’<%# databinder.eval(container, "dataitem.genre") %>’> 
      </asp:label> 
   </itemtemplate> 
   <edititemtemplate> 
      <asp:dropdownlist id=dropdownlist1 runat="server" 
         datasource="<%# getgenretable() %>" 
         datamember="genre" 
         datatextfield="genre" 
         datavaluefield="genre" 
         width="120px"> 
     </asp:dropdownlist> 
   </edititemtemplate> 
</asp:templatecolumn> 
(unfinished)
文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·数据库开发个人总结(ADO.NET小结)-.NET教程,数据库应用
·怎么由DataSet将数据导入Excel?-.NET教程,数据库应用
·动态创建SQL Server数据库、表、存储过程-ASP教程,数据库相关
·Win32环境下动态链接库(DLL)编程原理-.NET教程,数据库应用
·封装的ADO.NET对数据库操作经典类-.NET教程,数据库应用
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·DataGrid使用心得(附大量代码)-ASP教程,数据库相关
·用代码创建DataGrid的多链接及checkbox事件响应-.NET教程,数据库应用
·ADO.NET 的最佳实践技巧-.NET教程,数据库应用
·转载: 用纯ASP代码实现图片上传并存入数据库中

最新文章
·根据数据表中数据,生成Powerpoint幻灯片-ASP教程,数据库相关
·DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon-ASP教程,数据库相关
·使用用VB处理MYSQL数据库中二进制数据问题-.NET教程,VB.Net语言
·关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·.net下访问Access数据库需要注意的问题-.NET教程,Asp.Net开发
·ActiveMQ4.1+Spring2.0的POJO JMS方案(上)-.NET教程,数据库应用
·ASP.NET 2.0中直接将Access数据库导入到Excel文件中-.NET教程,Asp.Net开发
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号