文件是mssql解决方案里的datagrid程序。

DataGrid的基本结构整理:
<asp:datagrid id="dgsy" runat="server" ForeColor="Black" BackColor="White" BorderWidth="1px" BorderStyle="Solid"
GridLines="Vertical" CssClass="dg1" CellPadding="3" BorderColor="#999999" AllowSorting="True"
AutoGenerateColumns="False" PageSize="7" AllowPaging="True">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
<FooterStyle BackColor="#CCCCCC"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="named" HeaderText="机体名称" SortExpression="named"></asp:BoundColumn>
<asp:BoundColumn DataField="act" HeaderText="所属作品" SortExpression="act"></asp:BoundColumn>
<asp:BoundColumn DataField="id" HeaderText="编号"></asp:BoundColumn>
<asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="cc.aspx?id={0}" DataTextField="id"
HeaderText="连接"></asp:HyperLinkColumn>
<asp:ButtonColumn Text="详细" HeaderText="操作" CommandName="more"></asp:ButtonColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
其中分页和删除、编辑列都是通过属性生成器完成的,BoundColumn为自定义列时需要使用的,在这里可以自己定义headertext,但必须要把AutoGenerateColumns的值设为flase。如果要进行排序的话,就必须要指定SortExpression,这是用来排序的数据表的列名。
相对应的事件处理方法都是在属性面板的事件栏里进行操作。
<asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="cc.aspx?id={0}" DataTextField="id"
HeaderText="连接"></asp:HyperLinkColumn>这是超级连接的列的设置办法。DataNavigateUrlField是连接里变量参数的值,指的是数据库里的相应的列。DataNavigateUrlFormatString是连接字符串,其中有一个参数,这个位置的值就是DataNavigateUrlField,DataTextField是用来在页面上显示的字符,也是相对应的数据库里的相应的列。

数据绑定到datagrid
DataSet ds=new DataSet();
ada.Fill(ds,"mss");
DataView dv=ds.Tables["mss"].DefaultView;
dv.Sort=(string)ViewState["SortField"];
dgsy.DataSource=dv;
dgsy.DataBind();
这是绑定时的部分代码,注意这里用了DataView,这个还没有研究,另外加了一个排序时需要的功能dv.Sort,后面接收的值在排序事件处理时给予。

dgsy.EditItemIndex=e.Item.ItemIndex;
setup();
这是处理编辑事件时的代码,可以看到,和datalist差不多

删除事件
int ids=Int32.Parse(e.Item.Cells[2].Text);
string sqldel="delete from ms where id="+ids;
处理删除时用的,和datalist真的差不多,e.Item.Cells[2]是指触发事件的datagrid的那一行的第二列的值,这里就是一个id,然后再根据id把记录删了

int ids=Int32.Parse(((TextBox)(e.Item.Cells[2].Controls[0])).Text);
这个id的获取就不一样了,因为这是在处理update时,datagrid那一行都变成textbox了,所以要进行格式的转换,另外e.Item.Cells[2].Controls[0]表示这个行列的第一个控件,自然就是我们需要的textbox

相关值的获取
dr["named"]=((TextBox)(e.Item.Cells[0].Controls[0])).Text;
dr["act"]=((TextBox)(e.Item.Cells[1].Controls[0])).Text;
ada.Update(ds,"mss");
具体的处理过程。
关于分页,这个如果用datareader就麻烦了,需要自己指定,但是dataset就可以作到一个allowpaging就可以搞定。

默认分页
dgsy.CurrentPageIndex=e.NewPageIndex;
setup();
处理页码改变的代码
注意的是,不管你的pagesize是多少,在一开始的时候都是把所有的记录都调出来,然后再进行下一步操作,所以对资源的浪费是肯定的,在这里有一个好的办法就是用自定义分页,就是AllowCustomPaging="True",关于这个我学会了一点,呆会就写个东西上来。

处理事件冲突的办法
还有,如果ButtonColumn和EditCommandColumn同时使用,单击EditCommandColumn中的按钮时,除激发响应的编辑、取消、更新等事件外,还会激发ItemCommand事件,这意味着有两个事件处理程序被执行。(注意,在datalist里也存在这样的情况。)
解决的办法是定义ButtonColumn的commandname或commandargument属性,在ItemCommand事件中先判断命令源的commandname或commandargument,再执行响应的操作。下面是相应的代码

//点击事件发生时的事件
private void dgsy_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="more")
{
//获得返回的tablerow对象
TableRow tr=e.Item;
//获得tablecell的数据
string s=tr.Cells[2].Text;
Response.Write(s);
setup();
}
}
基本就这些了。或许应该把图书馆里的那本书拿过来好好研究研究。

2004-7-21/22+ DataGrid知识整理相关推荐

  1. 从714里连续减去6减几次得0_数学干货 | 小学数学1—6年级基础知识整理 ,预习复习都能用...

    小学数学基础知识整理 (一到六年级) 小学一年级:初步认识加减法.学会基础加减. 小学二年级:完善加减法,表内乘法,学会应用题,基础几何图形. 小学三年级:学会万以内加减法,长度单位和质量单位,倍数的 ...

  2. 从714里连续减去6减几次得0_小学数学1—6年级基础知识整理 ,预习复习都能用...

    小学数学基础知识整理 (一到六年级)      小学一年级  初步认识加减法.学会基础加减. 小学二年级  完善加减法,表内乘法,学会应用题,基础几何图形.小学三年级  学会万以内加减法,长度单位和质 ...

  3. 安卓高级面试知识整理

                                                    安卓高级面试知识整理 Android 四大组件:这是一份全面 & 详细的Activity学习指南 ...

  4. WIFI基本知识整理

    quietheart.blog.chinaunix.net WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习.因为无线网络中涉及术语很多,并 ...

  5. iOS开发面试知识整理 – OC基础 (二)

    iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...

  6. 矩阵论(零):线性代数基础知识整理(5)——特征值与相似

    矩阵论专栏:专栏(文章按照顺序排序) 本篇博客的上篇是矩阵论(零):线性代数基础知识整理(4)--线性空间与线性变换,梳理了线性空间与线性变换的相关内容.本文主要整理矩阵的特征值与相似的相关内容. 方 ...

  7. 【本科数学基础知识整理】

    [本科数学基础知识整理] 文章目录 前言 一.高等数学 二.微积分 1. 三. 六.随机变量 七.概率论 7.1 概念解释(PDF.PMF.CDF) 7.1.1 PMF:概率质量函数 7.1.2 PD ...

  8. MYSQL数据库常用知识整理

    为什么80%的码农都做不了架构师?>>>    MYSQL数据库常用知识整理 什么是MYSQL MYSQL的特性 MYSQL存储引擎的分类以及数据文件的介绍 MYSQL赋权 MYSQ ...

  9. 五年级上册分数计算机,五年级上册分数知识整理

    <五年级上册分数知识整理>由会员分享,可在线阅读,更多相关<五年级上册分数知识整理(3页珍藏版)>请在人人文库网上搜索. 1.分数知识整理1. 相同分数对应的整体相同(不同), ...

  10. 【转】医学影像处理相关知识整理(一)

    转自:医学影像处理相关知识整理(一) - 知乎 Segmentation to RT structure 近日做医疗影像处理相关的内容,感慨于这方面资料不全.散碎,遂记录自己获得的一些资料以供日后查阅 ...

最新文章

  1. 网友提问:精通 Spring 全家桶,被 15 家公司拒绝,大专程序员出路在哪?
  2. Mysql 的使用方式,挺全的够用了
  3. 超大数据下大批量随机键值的查询优化方案 1
  4. 关于flutter列表的性能优化,你必须要了解的
  5. go语言判断手机号归属地
  6. 华三服务器收集系统日志,Rsyslog+H3C日志系统(示例代码)
  7. 【蓝桥杯每日一练】 三色旗
  8. 关于前端开发,你真的了解吗?
  9. (转载)equals与==
  10. Adobe下周将推新补丁和新的更新模式
  11. Android串口示波器,解读一个超赞的开源串口虚拟示波器项目
  12. Xmodem/Ymodem/Zmodem协议详解
  13. 神舟笔记本电脑进入u启动之BIOS设置方法
  14. C语言递归函数 写一个程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
  15. C# signtool error:no certificates were found that met all the given criteria 错误解决方案
  16. 论文解读:医学影像中的注意力机制
  17. 如何快速实现西门子S7-200/300 PLC转Modbus-TCP协议与第三方数据对接
  18. PowerDesigner 15及破解补丁下载(转)
  19. 空格折叠(幽灵折叠)
  20. python代码提示太弱了_10行Python代码制作群聊提醒小助手,再也不怕漏掉消息了...

热门文章

  1. Visual Studio 201~ Code 格式检查
  2. Java 避免创建不必要的对象
  3. iOS蓝牙开发总结-4
  4. Powershell About Active Directory Server
  5. 如何从右键弹出菜单中清空删除数据加清空前提问确定
  6. php url地址栏传中文乱码解决方法集合
  7. 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
  8. freeswitch 用户配置详解_FreeSwitch配置和使用手册
  9. 组件源码——拖动条Slider
  10. Python的静态类型之旅