电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
DataGrid使用心得(附大量代码)-ASP教程,数据库相关
作者:网友供稿 点击:139
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
 

datagrid使用心得(附大量代码)

    1. 为 datagrid 控件设计样式
   
    在<asp:datagrid id="datagrid1" runat="server">之后添加如下代码
   
    <footerstyle forecolor="black" backcolor="#cccccc"></footerstyle>
    <selecteditemstyle font-bold="true" forecolor="white" backcolor="#008a8c"></selecteditemstyle>
    <alternatingitemstyle backcolor="gainsboro"></alternatingitemstyle>
    <itemstyle forecolor="black" backcolor="#eeeeee"></itemstyle>
    <headerstyle font-bold="true" forecolor="white" backcolor="#000084"></headerstyle>
   
    说明:
    (1) 在每个标签内主要是  forecolor   backcolor  font-bold 这几个属性值
   
    2. 为 datagrid 控件添加绑定列
   
    <asp:boundcolumn datafield="" readonly="true" headertext=""></asp:boundcolumn>
    说明:
    (1) 在标签内的基本属性是 datafield / headertext
    (2) dataformatstring 用于 获取或设置指定列中各项的显示格式的字符串。
     形式为 { a: bxx }。例如,格式化字符串 {0:f2} 将显示带两位小数的定点数。
     其中a值只能设置为 0,因为每个单元格中只有一个值。
     冒号后的字符(常规示例中为 b)指定值的显示格式
     c  以货币格式显示数值。
        d  以十进制格式显示数值。
        e  以科学记数法(指数)格式显示数值。
        f  以固定格式显示数值。
        g  以常规格式显示数值。
        n  以数字格式显示数值。
        x  以十六进制格式显示数值。
    (3) visible 获取或设置一个值,该值指示此列在 datagrid 控件中是否可见。
    (4) readonly 设置些列是否只读,若是只读的话,则不能修改.
    (5) sortexpression 获取或设置选择进行排序的列时传递到 onsortcommand 方法的字段或表达式的名称。
  

  3. 为 datagrid 控件添加模板列
    <asp:templatecolumn headertext="类别">
     <itemtemplate>
      <asp:label text=<%# databinder.eval(container.dataitem, "actorclassname") %> runat="server" id="label1"/>
     </itemtemplate>
     <edititemtemplate>
      <select name="sltclassname">
       <% = actorclass.getparentclass(0) %>
      </select>
     </edititemtemplate>
    </asp:templatecolumn>
    说明:
    (1) 基本框架是
      <asp:templatecolumn headertext="类别">
    <itemtemplate></itemtemplate>
     </asp:templatecolumn>
    (2) 全面的模板列
     <asp:templatecolumn>

               <headertemplate>
                  <b> tax </b>
               </headertemplate>

               <itemtemplate>
                  <asp:label
                       text=<%# databinder.eval(container.dataitem, "tax") %>
                       runat="server"/>
               </itemtemplate>

               <edititemtemplate>

                  <asp:checkbox
                       text="taxable"
                       runat="server"/>

               </edititemtemplate>

               <footertemplate>
                  <asp:hyperlink id="hyperlink1"
                       text="microsoft"
                       navigateurl="http://www.microsoft.com"
                       runat="server"/>
               </footertemplate>

            </asp:templatecolumn>
 (3) 为布尔型列应用模板列
  <asp:templatecolumn>
         <itemtemplate>
             <asp:label
                  text=<%# databinder.eval(container.dataitem, "tax") %>
                     runat="server"/>
            </itemtemplate>
            <edititemtemplate>
             <asp:checkbox
                  text="taxable"
                     runat="server"/>

            </edititemtemplate>
        </asp:templatecolumn>
        在正常状态,用 label控件显示
        在编辑状态,用 checkbox控件显示
   
 (4) 为枚举类型列应用模板列,如业务地区(全网/广东/云南等等)
  <asp:templatecolumn headertext="处理方式">
   <itemtemplate>
    <asp:label id="lbstatus">
     <%# databinder.eval(container, "dataitem.dealwith") %>
    </asp:label>
   </itemtemplate>
   <edititemtemplate>
    <asp:dropdownlist id="dpstatus2" runat="server" datatextfield="status">
     <asp:listitem value="log">log(日志)</asp:listitem>
     <asp:listitem value="sendsms">sendsms(短信)</asp:listitem>
    </asp:dropdownlist>
   </edititemtemplate>
  </asp:templatecolumn>
  在正常状态,用 label控件显示
  在编辑状态,用 dropdownlist控件显示
 
 (5) 为长字符串应用模板列,如一篇文章的内容
  还未做过
  
 4. 为 datagrid 控件添加按钮列
 
 <asp:buttoncolumn
        headertext="remove from cart"
        buttontype="pushbutton"
        text="remove"
        commandname="removefromcart" />
    (1) 要使用按钮列,必须在 datagrid 控件中添加 onitemcommand 属性,并为该事件添加处理方法.
    (2) 模板列可以实现按钮列能实现的任何功能.
   
    5. 为 datagrid 控件添加编辑列
    <asp:editcommandcolumn buttontype="linkbutton" updatetext="更新" headertext="编辑" canceltext="取消" edittext="编辑"></asp:editcommandcolumn>
    (1) buttontype 有两个值: linkbutton 超级链接样式按钮的列 | pushbutton 普通按钮的列。

 6. 为 datagrid 控件添加超链接列
 <asp:hyperlinkcolumn text="添加子类" datanavigateurlfield="actorclassid" datanavigateurlformatstring="addactorclass.aspx?classid={0}"></asp:hyperlinkcolumn>
 (1) 为每一行设置相同的文字及跳转的url地址
  设置 text 和 navigateurl 属性,则列中的所有超级链接将共享同一标题和 url
 (2) 为每一行设置不同的文字及不同跳转的url地址
  a.  用 datatextfield 设置数据源字段,若还想在原数据的基础上加工一下(如字段值为300,想显示为300元)
   则再设置 datatextformatstring 字段
  b. 用datanavigateurlfield 及 datanavigateurlformatstring 来设置url地址
   用datatextfield = "money" datatextformatstring = "{0}元"
  c.  举例
   datanavigateurlfield="actorclassid" datanavigateurlformatstring="addactorclass.aspx?classid={0}"
   
 7. 为 datagrid 控件添加"编辑"代码
  在 datagrid 标签中加入
  onupdatecommand="datagrid1_update" oncancelcommand="datagrid1_cancel" oneditcommand="datagrid1_edit"代码
  在codebehind页面加入如下代码
  ///响应编辑按钮
  public void datagrid1_edit(object sender, datagridcommandeventargs e)
  {
   datagrid1.edititemindex = e.item.itemindex;
   if (request.querystring.get("classid") != null)
    common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
   else
    common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by depth,orderid desc"));
  }
  
  ///响应取消按钮
  public void datagrid1_cancel(object sender, datagridcommandeventargs e)
  {
   datagrid1.edititemindex = -1;
   if (request.querystring.get("classid") != null)
    common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
   else
    common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by depth,orderid desc"));

  }
  
  ///响应更新按钮  
  public void datagrid1_update(object sender, datagridcommandeventargs e)
  {
   textbox classnametext = (textbox)e.item.cells[1].controls[0];
   string classname = classnametext.text;
   int classid = int32.parse((e.item.cells[0].text).tostring());
   textbox orderid2 = (textbox)e.item.cells[5].controls[0];
   int orderid = int32.parse(orderid2.text);
   actorclass.modifyactorclass(classname,classid,orderid);

   datagrid1.edititemindex = -1;
   if (request.querystring.get("classid") != null)
    common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
   else
    common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by depth,orderid desc"));
  }
  说明
  (1) datagrid 事件处理程序的格式
   methodname(object sender, datagridcommandeventargs e)
  (2) 更新按钮的说明
   a. 获取编辑状态中的文本框
    textbox classnametext = (textbox)e.item.cells[1].controls[0];
    string classname = classnametext.text;
   b. 获取编辑状态中的下拉列表框
    方法一
    int classid;
    classid = int32.parse(request.form.get("sltclassname"));
    方法二
    dropdownlist bbb = (dropdownlist)e.item.cells[10].findcontrol("dpstatus2");
    string ddpvalue = bbb.selectedvalue
   c. 获取编辑状态中的复选框
    bool boolenabled = ((checkbox)e.item.findcontrol("chk_enabled")).checked;
    string str2;
    if (boolenabled)
    {
     str2="1";
    }
    else 
    {
     str2="0";
    }
    赋值给 str2 ,原因是插入到数据库的布尔型值只能是 1 或者 0
   d. 获取编辑状态中的文本值,即该列是只读的.
    string storyid = (e.item.cells[0].text).tostring();
 
 8. 为 datagrid 控件添加分页事件
  在 datagrid 控件标签中加入如下代码
  onpageindexchanged="datagrid1_pageindexchanged"
  在后台中加入如下代码
  /// <summary>
  /// 响应分页事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  public void datagrid1_page(object sender, datagridpagechangedeventargs e)
  {
   datagrid1.currentpageindex = e.newpageindex;
   databind();
  }
 
 9. 为 datagrid 控件添加绑定事件,即在 datagrid绑定时发生的事件处理
  一般用些事件来,做一些页面上的效果.如更改背景色,文本框大小等.
  onitemdatabound="datagrid1_itemdatabound"
  /// <summary>
  /// 响应datagrid绑定事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  public void datagrid1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
  {
   if (e.item.itemtype == listitemtype.item)
   {
    e.item.attributes.add("onmouseover","this.style.backgroundcolor=#c8dafa");
    e.item.attributes.add("onmouseout","this.style.backgroundcolor=white");

   }
   else if (e.item.itemtype == listitemtype.alternatingitem)
   {
    e.item.attributes.add("onmouseover","this.style.backgroundcolor=#c8dafa");
    e.item.attributes.add("onmouseout","this.style.backgroundcolor=#f6f6f6");
   }
  }
  
 10. 为 datagrid 控件添加接钮处理事件程序
  在 datagrid 控件标签中加入如下代码
  onitemcommand="itemsgrid_command"
  在后台中加入如下代码
  public void itemsgrid_command(object sender, datagridcommandeventargs e)
  {
   switch(((linkbutton)e.commandsource).commandname)
   {

    case "delete":
     int classid = int32.parse((e.item.cells[0].text).tostring());
     actorclass.deleteactorclass(classid);
     if (request.querystring.get("classid") != null)
      common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
     else
      common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by depth,orderid desc"));
     break;

     // add other cases here, if there are multiple buttoncolumns in
     // the datagrid control.
    case "hidden":
     int actorid = int32.parse((e.item.cells[0].text).tostring());
     actorclass.hiddenactorclass(actorid);
     if (request.querystring.get("classid") != null)
      common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
     else
      common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by depth,orderid desc"));
     break;
    case "moveup":
     int actorclassid = int32.parse((e.item.cells[0].text).tostring());
     string orderid = (e.item.cells[5].text).tostring();
     actorclass.moveup(orderid,actorclassid);
     if (request.querystring.get("classid") != null)
      common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
     else
      common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by depth,orderid desc"));
     break;
    case "movedown":
     actorclassid = int32.parse((e.item.cells[0].text).tostring());
     orderid = (e.item.cells[5].text).tostring();
     actorclass.movedown(orderid,actorclassid);
     if (request.querystring.get("classid") != null)
      common.binddata(datagrid1,common.getsource("select * from actorclass where parentid=" + request.querystring.get("classid") + " order by depth,orderid desc"));
     else
      common.binddata(datagrid1,common.getsource("select * from actorclass where depth=1 order by orderid"));
     break;
    

    default:
     // do nothing.
     break;

   }
  }

 11. 为 datagrid添加模板列,但是内容根据字段值来显示"链接",还是文本
  以下三个都是,根据字段列不同,而显示内容及显示控件不同的处理代码.
  <asp:templatecolumn headertext="子菜单">
   <itemtemplate>
    <%# actorclassmanage.hasleaf(databinder.eval(container.dataitem,"actorclassid").tostring(),databinder.eval(container.dataitem,"child").tostring())%>
   </itemtemplate>
  </asp:templatecolumn>
  public static string hasleaf(string id,string child)
  {
   string lrtn = "";
   if (int32.parse(child) > 0)
    lrtn="<a href=actorclassmanage.aspx?classid="+id+"><font color=blue>子菜单(" + child + ")</font></a>";
   else
    lrtn = "无子菜单";

   return lrtn;
  }
  <asp:templatecolumn headertext="属性">
   <itemtemplate>
    <asp:linkbutton text=<%# ishidden(databinder.eval(container.dataitem,"actorclassid").tostring(),(bool)databinder.eval(container.dataitem,"enabled")) %> runat="server" commandname="hidden" id="linkbutton1"></asp:linkbutton>
   </itemtemplate>
  </asp:templatecolumn>
  public static string ishidden(string id,bool enabled)
  {
   string lrtn = "";
   if (enabled == true)
   {
    lrtn = "[显示]";
   }
   else
   {
    lrtn = "隐藏";
   }
   return lrtn;
  }
  public static void sort(string actorclassid, string orderid)
  {
   string temp = "";
   if (int32.parse(bgpicmanage.getmaxcode("actorclass","orderid")) == int32.parse(orderid))
   {
    temp += "<ipnut type=submit value=向下移>";
   }
   if (int32.parse(orderid) == 0)
   {
    temp += "<ipnut type=submit value=向上移>";
   }
  }
  
 12. datagrid 控件自定义分页代码
 
  将下列代码放于包含<datagrid>的form中去,
  <p style="font-size:9pt" align="center">
          <asp:label id="lblpagecount" runat="server"></asp:label>
          <asp:label id="lblcurrentindex" runat="server"></asp:label>
          <asp:linkbutton id="btnfirst" onclick="pagerbuttonclick" runat="server" font-name="verdana"
           font-size="8pt" forecolor="navy" commandargument="0"></asp:linkbutton>
          <asp:linkbutton id="btnprev" onclick="pagerbuttonclick" runat="server" font-name="verdana"
           font-size="8pt" forecolor="navy" commandargument="prev"></asp:linkbutton>
          <asp:linkbutton id="btnnext" onclick="pagerbuttonclick" runat="server" font-name="verdana"
           font-size="8pt" forecolor="navy" commandargument="next"></asp:linkbutton>
          <asp:linkbutton id="btnlast" onclick="pagerbuttonclick" runat="server" font-name="verdana"
           font-size="8pt" forecolor="navy" commandargument="last"></asp:linkbutton>
        </p>
       
        后台代码
       
        private void page_load(object sender, system.eventargs e)
        {
          // 在此处放置用户代码以初始化页面
          btnfirst.text = "最首页";
          btnprev.text = "前一页";
          btnnext.text = "下一页";
          btnlast.text = "最后页";
          //绑定数据源
          if (!page.ispostback)
          {
           opendatabase();
           bindgrid();
          }
        }
       
        //用于显示"第几页,总*页"
        private void showstats()
  {
    lblcurrentindex.text = "第 " + (mydatagrid.currentpageindex + 1).tostring() + " 页";
    lblpagecount.text = "总共 " + mydatagrid.pagecount.tostring() + " 页";
  }
  
  //响应分页按钮
  public void pagerbuttonclick(object sender, eventargs e)
        {
         string arg = ((linkbutton)sender).commandargument.tostring();
          switch(arg)
          {
            case "next":
              if (mydatagrid.currentpageindex < (mydatagrid.pagecount - 1))
              {
               mydatagrid.currentpageindex += 1;
              }
              break;
            case "prev":
              if (mydatagrid.currentpageindex > 0)
              {
               mydatagrid.currentpageindex -= 1;
              }
              break;
            case "last":
              mydatagrid.currentpageindex = (mydatagrid.pagecount - 1);
              break;
            default:
              mydatagrid.currentpageindex = system.convert.toint32(arg);
              break;
          }
          bindgrid();
          showstats();
        }

 


文章整理:西部数码--专业提供域名注册虚拟主机服务
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号