- 浏览: 2067982 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (1409)
- asp/asp.net学习 (241)
- oracle (10)
- delphi (295)
- java (27)
- pb (1)
- 每日点滴 (49)
- 学习方法 (40)
- 思想方面 (104)
- C语言 (5)
- C++ (1)
- 代码重构经验 (5)
- 软件工程 (3)
- 数据库 (99)
- 英语学习 (3)
- mysql (1)
- 该关注的网站或者网页 (42)
- 总结 (7)
- 要去做的事情 (33)
- 算法 (1)
- 网络方面 (29)
- 随感 (96)
- 操作系统 (36)
- UML (12)
- 常用工具的使用 (55)
- 脚本 (7)
- 汇编 (62)
- 数据结构 (2)
- 财务 (38)
- 语文作文 (16)
- 法律 (1)
- 股票 (88)
最新评论
-
devwang_com:
可以,学习了~~
列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用 -
hvang1988:
不管用啊 frxrprt1.PreviewForm.Pare ...
fastReport预览时嵌入到别的窗体 -
00915132:
我也有这个疑问,非常 感 谢
left join加上where条件的困惑 --SQL优化 -
zhuyoulong:
学习了,高效读书
软件架构师要读的书 -
nTalgar:
非常感谢分享!
Application.ProcessMessages用法:
转自:http://apps.hi.baidu.com/share/detail/14674404
Datagrid整体介绍:
Datagrid类似于数据库的表格,记录集由行集(items)和列集(columns)组成,行集由多个datagridColumn组成,列集由多个datagriditem组成。
工作原理:1.dataset取得数据,2.指定datagrid的数据源为dataset,3.datagrid绑定数据。在绑定数据的时候,自动加载datagrid列。创建之后,调用两个事件,ItemCreated和ItemDataBound创建行。
datagrid有两个对象,datagridColumn(代表一列)和Datagriditem(代表一行)。
每个行集中有ListItemType,有以下几种类型:Header,Footer,Item,AlernatingItem,SelectedItem,EditItem,Separastor,Pager。
列集有以下几种类型:BoundColumn,HyperLinkColumn,ButtonColumn,TemplateColumn。
如果Datagrid有子控件,那么Datagrid是通过ItemCommand事件获取控件的。
DatagridColumn的介绍:
1.绑定列:BoundColumn,文本字段标准显示,当处于编辑状态,将显示为TextBox
2.按钮列:包括选择按钮,删除按钮,更新按钮,编辑按钮,普通按钮,每种按钮都有相对应的事件,有两种3.按钮样式风格,LinkButton和PushButton
3.超链接列
4.模板列:TemplateColumn,完全控制哪些控件显示给用户,分为多种模板,有HeaderTemplate,ItemTemplate,EditiItemTemplate,FooterTemplate。非模板列均可以转换为模板列来增加更灵活的功能。
5.编辑命令列
以上列都继承于DataGridColumn。
实例演示:1.在页面中拖放一个Datagrid控件
2.拖放一个SqlDataAdapter
3.生成数据集
4.配置Datagrid属性,配置数据源,数据成员和数据键字段(按哪个主键绑定),配置列,生成顺序是先生成自定义列,再生成自动生成的列
5.在Page_Load事件中书写代码
if (!Page.IsPostBack)
{
sqlDataAdapter1.Fill(dsCustomers1);
DataGrid1.DataBind();
}
6.添加编辑,更新,取消,删除操作按钮,为这些按钮编写事件
void bindData()
{
sqlDataAdapter1.Fill(dsCustomers1);
DataGrid1.DataBind();
}
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=e.Item.ItemIndex; //设置当前行为编辑状态
bindData();
}
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//首先取得行中的每个字段
string CustomerID=e.Item.Cells[1].Text; //非编辑状态
string CompanyName=((TextBox)e.Item.Cells[2].Controls[0]).Text; //编辑状态
string ContactName=((TextBox)e.Item.Cells[3].Controls[0]).Text;
string ContactTitle=((TextBox)e.Item.Cells[4].Controls[0]).Text;
string Address=((TextBox)e.Item.Cells[5].Controls[0]).Text;
string City=((TextBox)e.Item.Cells[6].Controls[0]).Text;
string Region=((TextBox)e.Item.Cells[7].Controls[0]).Text;
string Country=((TextBox)e.Item.Cells[8].Controls[0]).Text;
sqlDataAdapter1.Fill(dsCustomers1); //重新填充数据集
dsCustomers.CustomersRow dr=dsCustomers1.Customers.FindByCustomerID(CustomerID); //获取当前行
//获取修改后的值
dr.CompanyName=CompanyName;
dr.ContactName=ContactName;
dr.ContactTitle=ContactTitle;
dr.Address=Address;
dr.Region=Region;
dr.Country=Country;
sqlDataAdapter1.Update(dsCustomers1); //更新数据集
dsCustomers1.AcceptChanges(); //接受更新
DataGrid1.EditItemIndex=-1; //修改状态为非编辑状态
bindData(); //重新绑定数据
}
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string CustomerID=e.Item.Cells[1].Text; //获取此行主键
sqlDataAdapter1.Fill(dsCustomers1); //重新填充数据集
dsCustomers.CustomersRow dr=dsCustomers1.Customers.FindByCustomerID(CustomerID); //获取当前行
dr.Delete(); //删除行
sqlDataAdapter1.Update(dsCustomers1); //更新数据集
dsCustomers1.AcceptChanges(); //接受更新
bindData(); //重新绑定
}
private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
bindData();
}
使用DataGrid注意事项:
1.需要更大的灵活性时,建议不要使用自动生成列
2.如果使用了自动生成列,并且在Datagrid中指定了列,那么最终得到列的重复设置。系统将首先显示特别声明的列,随后是所有自动生成的列。
3.切忌不可仅使用控件ID来引用Datagrid项目中的控件,须用FindControl来指明。
DataGridItem介绍
注意事项:
对于非模板列:datagriditem.Cells[第几个单元格].Controls[第几个控件]下标从0开始。可以转换成相应的控件:如boundColumn:Label EditColumn :Textbox LinkColumn:DataGridLinkButton
当模板列时,Control的index必须都加1,因为Control[0] LiteralControl="";
建议:当知道控件ID值,建议采用datagriditem.findcontrol["控件名称"]来获得
DataGridItem构建行的流程:可以分页时,itemCreated事件依次创建〔如果有分页〕Pager(表头页),Header(表头),Item(一行),AlternatingItem(交替行),Footer(脚注),〔如果有分页〕Pager页(表尾页)。如果按下了“编辑”按钮,则执行当前编辑按钮所处的行的EditItem,如果按下了选择按钮,则执行当前选择按钮所处的行的SelectedItem。
Datagrid绑定事件的触发流程:
1.DataBind绑定列,只要执行了DataBind方法,马上会激发这个方法。
2.ItemCreated创建行 (行容器),可转换成DataRowView
3.page.aspx页中的<%# 表达式%>
4.ItemDataBound绑定行数据,将数据存放于行容器中(数据绑定),可转换成DataRowView
5.加入items集合中,count属性+1,重复2-5过程
6.数据加载完毕后,PreRender数据呈现。
注意:如果在创建时手工添加自定义控件(不使用模板列),则需要在ItemCreated事件中绑定。
DataGrid绑定事件的常见问题:
1.引用e.Item.DataItem报错“对象不能为null"
原因:没有在ItemCreated或ItemDataBound下判断行类型,(DataRowView)(e.Item.DataItem)只有在item行、AlternatingItem行、SelectedItem、EditItem项下才有值
2.数据访问完后如何访问某行数据,可以使用datagriditem来搜索,代码结构如下:
foreach (datagriditem dgi in Datagrid1.items){
}
切记不可用dgi.datagriditem来访问,因为在itembound之后已重新为null
使用ItemCreated注意事项:当加载,修改行属性或行内的控件属性时,应该判断ItemType类型,因为每个单元格均有不同的项类型的呈现方式
数据绑定浅谈:ASP.NET数据绑定语法仅在调用DataBind方法时计算,调用的变量必须声明public类型。
简单属性:<%#custID%>,比如在Code behind声明了一个变量后需要在界面上显示的情况时使用
集合:<asp:ListBox id="List1" datasource='<%#myArray%>' runat="server"/>
表达式:<%# (customer.FistName+" "+customer.LastName)%>
方法结果 <%#GetBalance(custID)%>
模板列的数据绑定
Container.DataItem容器方法:
DataItem指的是Datagrid某一行,可通过类型转换成DataRowView,并可以获取该行中的每个单元,即DatagridItem和Container.DataItem功能相同。
方法一:循环获取已绑定的datagrid中列名为CustomerID
方法二:在绑定datagrid数据的过程中获取CustomerID(ItemDataBound事件),DataItem仅适用于DataGrid控件中的数据项,即ListItemType必须是Item,AlternatingItem,SelectedItem或EditItem才能访问,所以要加判断。)
方法三:DataBinder. 。<%#DataBinder.(数据项的命名容器,数据字段名,格式字符串)%>,对于Datagrid,DataList,Repeater的命名容器:Container.DataItem。缺点:性能不高。
ItemCommand事件
模板列中的子控件的事件--“冒泡事件”。子控件调用ItemCommand事件,指定控件的CommandName,从而调用子控件事件代码。
个性化分页技巧:默认的只有数字,可以在ItemCreated事件中的ItemType==ListItemType.Pager修改默认的呈现。
实例1:模板列的使用。字段编辑模式时使用DropDownList。步骤:
1.在界面上拖放一个Datagrid控件
2.拖放一个sqlDataAdapter控件,设置sqlConnection,并生成数据集。
3.设置该列为模板列
4.添加Item和EditItem,在Item中绑定Container.DataItem中的某个字段,在EditItem中放置DropDownList,并绑定设置FieldName和FieldValue
5.在DataGrid的ItemDataBound事件中填充需用于绑定DropDownList的数据集并绑定。注意:绑定之前先进行item类型判断,e.Item.ItemType==ListItemType.EditItem
6.修改UpdataItem事件更新在下拉列表中更新的值,注意事先要设置下拉列表的ID,使用FindControl方法获得,Control的index必须都加1,因为Control[0] LiteralControl=""。
实例2:ItemCommand事件的使用。点击下拉表中的某个值,在页面上部显示所选的项。
1.在DropDownList的SelectedValueChanged事件属性中定义用于处理的子事件的事件名。
2.在后台代码中定义子事件函数,注意事件属性应为public,不然前台无法显示
实例3:测试绑定列的流程
1.在页面中增加一按钮
2.添加按钮点击事件,显示添加到字符串的所有生成的行类型
3.在ItemCreated事件中将每个生成行的属性添加到字符串中。
实例4:插入一行。原理:新行在DataGrid的Footer中显示
1.在页面中添加一按钮
2.添加按钮事件,执行DataGrid1.ShowFooter=true;
3.在ItemCreater中判断当类型为Footer时轮循每个单元格,设置需要放置的控件,为控件添加事件处理名和显示文本
4.在DataGrid的ItemCommand事件中,对应每个CommandName,添加处理方法。比如对于Insert事件,需要添加新记录,并将ShowFooter属性设置为false,如果是取消,只需要将ShowFooter属性设置为false。
发表评论
-
关于 字符串中的单引号, 在sql存储过程中的传输总结; 逗号分隔的多个变量提取方法.
2011-10-14 17:49 3402摘自:http://blog.csdn.net/nutia ... -
抓取网站内容 asp.net
2011-10-11 13:28 1051HttpWebRequest myReq ... -
两个DATASET合并成一个新的DATASET
2011-09-28 18:17 2524摘自:http://topic.csdn.net/t/2 ... -
VS设置使用哪个浏览器来调试网页
2011-08-30 16:57 1197摘自:http://zhidao.baidu.com/ques ... -
可使用js获取TREE的CheckBox
2011-08-20 12:32 1092摘自:http://www.uipower.com/bb ... -
正则表达式 验证邮箱
2011-06-02 18:14 2646正则表达式 摘自:http://www.alixixi.com ... -
未能加载程序集 App_Web_vdcnimdz”错误
2011-04-25 17:38 1599问题描述: 自己的一个WebGPS程序,只是拷到了别的 ... -
.net跳到指定错误页面兵显示详细的错误信息
2011-04-14 16:48 1256.net跳到指定错误页面兵显示详细的错误信息 摘自:h ... -
注册*.ocx控件
2011-04-14 11:23 946注册*.ocx控件 问题描述:本地的网站的bin目录下有了个 ... -
C# 读取文本文件的时候出现汉字乱码
2011-04-12 16:01 2470问题描述:C# 使用ReadAllText方法读取文本文件的时 ... -
VS 2008中如何显示代码的行号
2011-04-09 09:51 1246摘自:http://zhidao.baidu.com/ques ... -
VS.NET2008可以使用书签的功能
2011-04-08 17:19 1392摘自:http://blog.csdn.net/lmh_851 ... -
两个类库要添加引用才能使用
2011-04-02 13:57 1164两个类库要添加引用才能使用 ---------------- ... -
缓存 <%@ OutputCache Duration="6000" VaryByParam="none" %>
2011-04-02 10:53 1179在页首添加: <%@ OutputCache Durat ... -
FrameSet的加载顺序
2011-04-02 09:56 3905FrameSet的加载顺序是: (1) mainFrame ... -
Response.AddHeader “P3P”,”CP=CAO PSA OUR”
2011-04-01 18:01 2549摘自:http://my.donews.com/alor ... -
Hashtable 的使用
2011-03-31 09:36 8172011-3-31 Hashtable 的使用: ... -
google地图使用(二)
2011-03-30 10:30 13312011-3-291. 今天客户反映,说GOOGLE地图上的拖 ... -
GOOGLE地图
2011-03-29 18:31 8332011-3-291. 今天客户反映,说GOOGLE地图上的拖 ... -
此组中没有可用的控件 工具箱 vs2008
2011-03-29 09:20 2134问题描述: 此组中没有可用的控件 工具箱 vs2008 ...
相关推荐
通过`Style`、`Template`等属性可以自定义DataGrid的整体外观以及单个列的样式。 #### 六、总结 通过本文的学习,我们可以看到DataGrid是一个非常强大且灵活的控件,它不仅能够满足基本的数据展示需求,还能支持...
下面将详细介绍如何实现DataGrid的自定义Header。 首先,理解`headerRenderer`是什么至关重要。`headerRenderer`是DataGrid提供的一种机制,允许开发者覆盖默认的列头渲染方式,以便根据项目需求创建独特的Header...
本文将详细讲解Datagrid键盘事件响应,包括Datagrid整体和单元格两个层面。 首先,我们来看Datagrid上的键盘响应。当Datagrid获得焦点后,用户可以通过键盘进行操作。例如,按下"0-1"、"A-Z"、"Enter"、"Backspace...
最后,将这个样式应用到`DataGrid`的列或整体上。如果是应用到特定列,可以通过`DataGridTextColumn`的`CellStyle`属性进行设置。 ```xml ``` 通过以上步骤,我们就能实现`wpf`中`DataGrid`动态设置单元格...
7. 外观定制:开发者可以通过设置样式、模板和皮肤来自定义DataGrid的外观,使其符合应用的整体风格。 8. 扩展性:DataGrid控件本身具有很高的可扩展性,可以添加自定义行为和功能,例如,通过编写自定义适配器来...
本篇文章将详细介绍如何利用 WPF 的 `ControlTemplate` 对 `DataGrid` 进行自定义样式,以及如何为特定行或列定制样式。 首先,`ControlTemplate` 是 WPF 中的一个重要概念,它允许我们完全重新定义控件的外观。...
通常,这样的博客文章可能会详细介绍DataGrid控件的使用方法,包括但不限于如何添加控件到界面、数据绑定、自定义列样式、事件处理以及性能优化等方面。 标签“源码”和“工具”暗示了该文章可能涉及DataGrid控件的...
本文将详细介绍如何为DataGrid添加确认删除的对话框,并通过示例代码来解释其实现过程。 #### 一、背景介绍 在ASP.NET Web Forms中,DataGrid是用于展示和编辑数据的一个重要控件。它提供了一种灵活的方式来显示...
你可以修改表格的边框、背景色、字体大小和颜色、行高、列宽等属性,使其与网站的整体风格保持一致。此外,还可以通过添加自定义的CSS类,实现更复杂的布局和动画效果。 2. **模板定制**:`datagrid`中的数据通常由...
除了整体样式外,还可以针对`DataGrid`的单元格、行或列定义特定样式。例如,为`DataGridTextColumn`设置文本对齐方式: ```xml ``` 5. **自定义列类型** `DataGrid`支持自定义列类型,以满足...
这不仅可以使应用程序的界面更符合业务需求,也能提升整体的视觉吸引力。 记住,良好的代码组织和注释同样重要,这有助于未来的维护和扩展。在实际项目中,你可能需要将这些样式定义放在单独的资源字典中,以便于...
在实际项目中,`list.css`可能包含了样式定义,用于美化筛选组件和datagrid的外观,使其与整体设计保持一致。而`datagrid.jsp`则是包含HTML结构和JavaScript逻辑的页面,可能包括datagrid的初始化代码、复选框的定义...
1. **整体外观**:你可以自定义DataGrid的整体背景色、边框颜色、边框宽度等。这可以通过设置DataGrid的Background、BorderBrush和BorderThickness属性来实现。 2. **单元格样式**:DataGrid中的每个单元格都可以有...
通过合理规划数据展示的结构,避免不必要的自定义绘制和样式设置,可以大大减少资源消耗,提高整体性能。 综上所述,优化大数据量加载DataGrid的关键在于减少不必要的数据传输和处理,充分利用服务器端资源,以及...
- **整体样式**:通过设置 DataGrid 的样式属性来自定义整体样式。 - 示例代码: ```xml <DataGrid.RowStyle> <Style TargetType="DataGridRow"> </DataGrid.RowStyle> ``` 以上介绍了使用 EasyUI ...
Style定义了控件的整体外观,而Template则更深入地控制了控件的结构和视觉表现。例如,可以创建DataGrid.RowStyle和DataGrid.CellStyle来定制行和单元格的样式,或者使用DataGrid.Columns属性中的DataGridTextColumn...
6. 自定义样式和主题:Datagrid可以通过CSS样式控制整体外观,包括单元格、表头、行等元素的样式。ASP.NET还提供了多种预设的主题,可以通过SkinID属性快速应用。 7. 高级功能:Datagrid还支持如行拖放、行合并、...
它允许开发者自定义列的样式、行为以及整体布局,以满足特定的用户界面需求。 接下来,我们讨论`LINQ to SQL`。这是一种强大的数据查询语言,它扩展了C#和VB.NET,使得开发者可以直接在代码中使用类似SQL的语法进行...
在使用EasyUI框架进行Web应用开发时,DataGrid是一个非常重要的组件,用于展示结构化的数据。DataGrid提供了很多功能,包括分页、过滤...在实际项目中,记得根据需求调整CSS样式和图片资源,以匹配应用的整体设计风格。
EasyUIDataGrid是一款基于...通过以上介绍,我们可以看出EasyUIDataGrid是一个强大的.NET数据网格控件,适用于各种Web应用程序的数据展示和操作需求。理解并熟练运用其功能,能有效提高开发效率,提供更好的用户体验。