DataGrid事件用法(一)【鸡蛋】
来源:互联网 发布:软件合集蓝奏云 编辑:程序博客网 时间:2024/05/01 08:57
DataGrid控件是一种可绑定数据的网格控件,和Gridview一样,输出的代码是HTML表格(table);在ASP.NET1.X和2.0里面都包含该控件,更高版本的也许已经不支持了,因为它被功能更为强大的Gridview替代了;对于一个被抛弃的产品,出于维护老项目的需要还是需要我去学习的;
DataGrid页面关键属性设置:
AllowPaging="True" 是否启用分页
AllowSorting="True" 是否启用排序
PageSize="20" 每页的大小
CellSpacing="2" 设置相邻单元格的间距(垂直和水平)
CellPadding="2" 设置每个单元格边框和文本之间的距离
AutoGenerateColumns="False" 是否自动创建和显示数据源中的所有列【默认值是true,一般我们把它设置为false】
还有很多,不一一列举。
构成数据网格的图形元素:
AlternatingItemStyle 代表位于奇数行上的数据绑定行,通过它可以设置奇数行的样式
ItemStyle 代表位于奇数行上的数据绑定行,通过它可以设置奇数行的样式
HeaderStyle 代表网格的表头
PagerStyle 分页导航栏的外观
SeletedStyle 当前选定项的外观
如:
<AlternatingItemStyle CssClass="alterdesc"></AlternatingItemStyle><ItemStyle CssClass="itemdesc"></ItemStyle><HeaderStyle CssClass="title"></HeaderStyle>将数据绑定到网格:
默认情况下,该控件的视图中包含所有数据源中的列,如果我们想自定义显示的列,需要将AutoGenerateColumns="False"设置为false,默认为true;在这种情况下,只显示在<Columns> </Columns>集合中添加的列;主要区别在于,如果向Columns中添加列,需要指定Columns列的类型;
列类型:
BoundColumn 以纯文本形式显示绑定的数据列
ButtonColumn 这种列的每一项为一个按钮,按钮的文本可以绑定到数据源上
EditItemTemplateColumn 与“编辑”命令关联的按钮,如果某行处于编辑状态下,则使用该类型
HypeLinkColumn 超链接形式显示文本,可以设置当前文本跳转到的地址
ItemTemplateColumn 模板列,这种单元格的显示形式取决于用户自定义的模板【包含4中不同的模板,ItemTemplate、EditItemTemplate、HeaderTemplate、FooterTemplate】
所有列类型都有共有的属性:
HeadText 显示在当前列表头的文本
ItemStyle当前列单元格的样式
HeadStyle 当前列表头样式属性
Visible是否可见
各种列类型绑定数据的方法:
(1)BoundColumn
绑定的数据字段:DataField
显示的表头内容:HeaderText
设置文本显示格式:DataFormatString
如:
<asp:BoundColumn DataField="state_name" ReadOnly="True" HeaderText="Pickup Location"><HeaderStyle Width="120px"></HeaderStyle></asp:BoundColumn>(2)ButtonColumn
代表命令列,可以将每个按钮的文本绑定数据列。它的主要功能就是当你点击按钮时,触发一个动作 执行操作,而不单纯用来显示数据;它会与一段回发的代码关联,回发后会执行服务端的ItemCommand过程,在该过程中我们可以通过CommandName来区分不同列按钮的单击;并通过DatagridItem类的ItemIndex属性获取单击行的索引;
选择列是一种特殊的按钮列,它与一般的按钮咧一样有commandName属性,它有一个SelectIndexChanged事件,会对选定项的变更进行通知,可以通过selectIndex属性获取选定行的索引
如:
<asp:ButtonColumn runat="server" text="select" commandname="select"></asp:ButtonColumn>
为选定行指定样式:
<selectitemstyle backcolor="ccc" />
(3)HypeLinkColumn
DataTextField 设置超链接显示文本的字段 例如【proname】
DataNavigateUrlField 设置关于URL信息字段的名称(一般为url传递参数的值)例如:【proid】
DataNavigateUrlFormatString用于定义URL的最终格式 例如【DataNavigateUrlFormatString=“proinfo.aspx?id={0}”】
例如:
<asp:HypeLinkColumn runat="server" DataTextField="proname" headertext=“Name” DataNavigateUrlField=“proid” DataNavigateUrlFormatString=“proinfo.aspx?id={0}”><itemstyle width="200px"/></asp:HypeLinkColumn>
这种方式每次只能传递一个参数,如果需要传递多个参数请用模板列或者换个控件gridview
(4)ItemTemplateColumn
直接上代码:
<asp:TemplateColumn HeaderText="Cost Per Minute"> <ItemTemplate> $<asp:Label id="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "price","{0:N2}") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> $<asp:TextBox id="cost_per_minute" CssClass=text2 runat="server" maxlength="8" Width="70px" Text='<%# DataBinder.Eval(Container.DataItem, "price","{0:N2}") %>'> </asp:TextBox> </EditItemTemplate></asp:TemplateColumn>
一个完整的DataGrid控件html代码:
<asp:datagrid id="dglist" runat="server" Width="800px" PageSize="20" AllowPaging="True" AllowSorting="True"CellSpacing="2" CellPadding="2" AutoGenerateColumns="False"><AlternatingItemStyle CssClass="css_alterdesc"></AlternatingItemStyle><ItemStyle CssClass="css_itemdesc"></ItemStyle><HeaderStyle CssClass="css_title"></HeaderStyle><Columns> <asp:TemplateColumn HeaderText="pro_id" Visible="False"> <%--隐藏列,可以在后台获取到他的值--%><ItemTemplate><asp:Label id="lab_pro_id" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "pro_id") %>'></asp:Label></ItemTemplate></asp:TemplateColumn><asp:BoundColumn DataField="name" ReadOnly="True" HeaderText="产品名称"><HeaderStyle Width="90px"></HeaderStyle></asp:BoundColumn><asp:TemplateColumn HeaderText="价格"><ItemTemplate>$<asp:Label id="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "price","{0:N2}") %>'> </asp:Label></ItemTemplate><EditItemTemplate>$<asp:TextBox id="price" CssClass=text2 runat="server" maxlength="8" Width="70px" Text='<%# DataBinder.Eval(Container.DataItem, "price","{0:N2}")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn><asp:TemplateColumn HeaderText="Action"><ItemTemplate><asp:LinkButton id="btnEdit" runat="server" CommandName="Edit">Edit</asp:LinkButton></ItemTemplate><EditItemTemplate><asp:LinkButton id="btnUpdate" runat="server" CommandName="Update">Update</asp:LinkButton> <asp:LinkButton id="btnCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton></EditItemTemplate></asp:TemplateColumn></Columns><PagerStyle Mode="Pages"></PagerStyle></asp:datagrid>
DataGrid数据绑定和分页:
'DataGrid数据绑定 '假设已经有了dataset数据源 If Not ds Is Nothing AndAlso ds.Tables.Count > 0 Then If ds.Tables(0).Rows.Count > 0 Then With dglist .DataSource = ds.Tables(0) If Not viewstate("pgIndex") Is Nothing Then .CurrentPageIndex = CInt(viewstate("pgIndex")) '设置当前页码 Else .CurrentPageIndex = 0 '设置当前页码 End If .DataBind() If .PageCount = 1 Then .PagerStyle.Visible = False '隐藏分页控件 Else .PagerStyle.Visible = True End If End With Else dglist.DataSource = Nothing dglist.DataBind() End If Else dglist.DataSource = Nothing dglist.DataBind() End If ds.Dispose() ds = Nothing
分页事件:
'当页码发生改变时激发 Private Sub dglist_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dglist.PageIndexChanged viewstate("pgIndex") = e.NewPageIndex binddglist() '重新执行数据绑定方法【上面那个方法】 End Sub
DataGrid数据编辑操作:
一般分为三个事件处理程序:通过 EditCommand将网格切换为编辑模式,通过CancelCommand将网格切换为只读模式,通过updateCommand保存更改并刷新网格内容;
'编辑按钮Private Sub dglist_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dglist.EditCommand Me.dglist.EditItemIndex = e.Item.ItemIndex bindWaitTimeScrubbing() End Sub'修改按钮 Private Sub dglist_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dglist.UpdateCommand Dim txt_price As TextBox = CType(Me.dglist.Items(Me.dglist.EditItemIndex).FindControl("price"), TextBox) Dim lab_pro_id As Label = CType(Me.dglist.Items(Me.dglist.EditItemIndex).FindControl("lab_pro_id"), Label) Dim String pro_id = CStr(IIf(lab_pro_id.Text.Trim.Length = 0, "0", lab_pro_id.Text.Trim)),Dim String txt_price=CStr(IIf(txt_price.Trim.Length = 0, "0", txt_price.Text.Trim)) Dim admin As New DAL.Admin Dim nRt As Int16 = admin.editpro(CInt(pro_id), txt_price, cost_per_minute, CInt(no_of_min_minute), CInt(grace_minute)) If nRt = 1 Then dglist.EditItemIndex = -1 Else Response.Write("<script language='javascript'>alert('数据修改失败');</script>") End If admin.Dispose() admin = Nothing dglist.EditItemIndex = -1 binddglist() '执行数据绑定 End Sub'取消按钮 Private Sub dglist_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dglist.CancelCommand dglist.EditItemIndex = -1 binddglist() '执行数据绑定 End Sub
- DataGrid事件用法(一)【鸡蛋】
- DataGrid事件的用法(二)【鸡蛋】
- DataGrid的用法(一)基本用法
- Henry手记 - Datagrid键盘事件响应(一)
- Henry手记 - Datagrid键盘事件响应(一)
- Henry手记 - Datagrid键盘事件响应(一)
- WPF之DataGrid用法(一)
- Page_PreRender页面事件【鸡蛋】
- 一筐鸡蛋
- DataGrid控件(一)
- DataGrid代码(一)
- DataGrid打印(一)
- 一筐鸡蛋的问题
- datagrid用法
- dojox.grid.DataGrid 编程篇(一)- 方法与事件
- Android事件总线(一)EventBus3.0用法全解析
- Android事件总线(一)EventBus3.0用法全解析
- 编辑DataGrid控件(一)
- java堆栈详解
- 销升客谈微信推广
- 利用Dom4j解析xml文档
- Android 状态栏背景修改为透明
- VSTO SaveCopyAs方法在Excel 2007下必须注意的一个问题
- DataGrid事件用法(一)【鸡蛋】
- 佩尔方程
- 二分图最大匹配模板
- 别人调用的 .net 下自带的 tree
- HTML--段落,换行,加重,斜体,标题显示
- Python装饰器学习
- 集体智慧编程学习之分类系统
- 按标签来查技术文章
- Android 4.0 Notification内容过长被截断,无法完整显示