- 浏览: 110941 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
wangming_1993:
[/img][/img][/img][/img][/img][ ...
nodejs express 上传文件 临时路径 -
beyond_开阔天空:
像scheme_menu中的scheme_second_men ...
内嵌数组操作 -
beyond_开阔天空:
请问一下,像这个子文档中的数组怎么插入、更新、删除{ &q ...
内嵌数组操作 -
yz285131311:
使用本地数据添加进 jqgrid, 那当它点击下一页这些时候能 ...
jqgrid 的一些操作 动态增加列 用本地 数据 修改表格 -
houyinke:
[/url][url][/url][url][/url][ur ...
java缩放图片
ajax GridView 嵌套 弹出模态窗口
页面结构 大体
第一层 updatepanel2
第二层 GridView1
GridView1的字段1
GridView1的字段2
GridView1的模板列1
第三层 1 GridView2
GridView1的模板列1
GridView1的模板列2
第三层 2 updatepanel1
第四层 GridView3
第三层 2 updatepanel1
GridView1的模板列2
第二层 GridView1
第一层 updatepanel2
特别说明
第四层的 GridView3 是由 GridView1 的模板列2 里 一个 LinkButton点击后填充的,
并由 AjaxControlToolkit 的 ModalPopupExtender 控件的模态弹出窗口负责显示的 ,
GridView3 里的数据是可以同时更新的。ModalPopupExtender 的显示控制是由后台负责的。
GridView 需要的数据 是由 linq提供的。所以这些代码拿过去是不能够直接使用的。
页面结构
<%@ Page Language="C#" MasterPageFile="~/Master/WareHouse.master" Theme="DataWebControls" AutoEventWireup="true" CodeFile="ProductionSearch.aspx.cs" Inherits="Pages_WareHouse_ProductionSearch" Title="Untitled Page" %> <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %> <asp:Content ID="Content1" ContentPlaceHolderID="MasterContent" Runat="Server"> <style type="text/css"> <!-- .modalBackground { background-color:Gray; filter:alpha(opacity=70); opacity:0.7; } --> </style> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" onrowdatabound="GridView1_RowDataBound" Width="700px" > <Columns> <asp:BoundField DataField="id" HeaderText="ID" /> <asp:BoundField DataField="name" HeaderText="Name" /> <asp:TemplateField> <ItemTemplate> <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" ShowHeader="false" onrowediting="GridView2_RowEditing" OnRowUpdating="GridView2_RowUpdating" OnRowCancelingEdit="GridView2_RowCancelingEdit" OnRowDeleting="GridView2_RowDeleting"> <Columns> <asp:BoundField DataField="id" > <HeaderStyle Width="50px" /> </asp:BoundField> <asp:BoundField DataField="name" > <HeaderStyle Width="50px" /> </asp:BoundField> <asp:CommandField ShowEditButton="True" > <HeaderStyle Width="100px" /> </asp:CommandField> <asp:CommandField ShowDeleteButton="True" > <HeaderStyle Width="50px" /> </asp:CommandField> </Columns> </asp:GridView> </ItemTemplate> <HeaderStyle Width="300px" /> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" oncommand="LinkButton1_Command" CommandArgument='<%# Eval("id") %>'>修改</asp:LinkButton> <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="LinkButton1" PopupControlID="Panel1" PopupDragHandleControlID="Panel2" BackgroundCssClass="modalBackground" Enabled = "false" CancelControlID="CencelButton"> </cc1:ModalPopupExtender> <asp:Panel ID="Panel1" runat="server" Width="300px" style="display:none; background-color:White;border:solid 1px black;"> <asp:Panel ID="Panel2" runat="server" Style="cursor: move;background-color:#DDDDDD;border:solid 1px Gray;color:Black"> fdsafsda</asp:Panel> <asp:UpdatePanel ID="UpdatePanel1" runat="server" > <ContentTemplate> <asp:GridView ID="DetailGridView" runat="server" AutoGenerateColumns="false" > <Columns> <asp:TemplateField HeaderText="UserID"> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="UserID"> <ItemTemplate> <asp:TextBox ID="TB_UserID" runat="server" Text='<%# Eval("userid") %>' ReadOnly="true"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="CarID"> <ItemTemplate> <asp:TextBox ID="TB_CarID" runat="server" Text='<%# Eval("id") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="CarName"> <ItemTemplate> <asp:TextBox ID="TB_CarName" runat="server" Text='<%# Eval("name") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> <HeaderStyle ForeColor="#33CCFF" /> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> <p> <asp:Button ID="UpdateButton" runat="server" Text="确定" OnClick="UserCarUpdateButton_OnClick" /> <asp:Button ID="CencelButton" runat="server" Text="取消" /> </p> </asp:Panel> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> </asp:Content>
后台代码
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Collections.Generic; using AjaxControlToolkit; public partial class Pages_WareHouse_ProductionSearch : System.Web.UI.Page { // 暂时使用的 userList 的缓存 key private string user_LIST_CACHE_KEY = "userListCache"; private IUserService userService = null; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { initPage(); } } /// <summary> /// 页面初始化 /// </summary> public void initPage() { userService = ServiceFactory.getUserService(); IList<user> userList = userService.getUser(); //这个 将查出来的数据缓存一下 不应该写在这里 HttpRuntime.Cache.Insert(user_LIST_CACHE_KEY, userList); this.GridView1.DataSource = userList; this.GridView1.DataKeyNames = new String[] { "id" }; this.GridView1.DataBind(); } /// <summary> /// 子GridView2的删除事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e) { //这里 要有相应的代码 } /// <summary> /// 外层GridView1的 行绑定事件 /// 在这里绑定每行的 子 GridVeiw2 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { int userID = int.Parse(GridView1.DataKeys[e.Row.RowIndex].Value.ToString()); GridView gv = (GridView)e.Row.FindControl("GridView2"); gv.DataSource = getCars(userID); gv.DataKeyNames = new string[] { "id", "userid" }; gv.DataBind(); } } /// <summary> /// 取得user的Car列表 /// </summary> /// <param name="id">userID</param> /// <returns></returns> private IList getCars(int userID) { //IList<user> userList = ((IList<user>)Cache.Get(user_LIST_CACHE_KEY)); userService = ServiceFactory.getUserService(); IList<user> userList = userService.getUser(); return (from u in userList where u.id == userID select u.Cars).ToList()[0]; } /// <summary> /// 子GridView2的更新事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e) { //dataBind(); GridView gv2 = (GridView)sender; Car car = new Car(); car.name = ((TextBox)gv2.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim(); car.id = int.Parse(gv2.DataKeys[e.RowIndex].Values["id"].ToString()); int userID = int.Parse(gv2.DataKeys[e.RowIndex].Values["userid"].ToString()); //这里调用更新Car的方法 gv2.EditIndex = -1; gv2.DataSource = getCars(userID); gv2.DataBind(); } /// <summary> /// 子GridView2的到切换的编辑状态的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e) { GridView gv2 = (GridView)sender; gv2.EditIndex = e.NewEditIndex; int carID = int.Parse(gv2.DataKeys[e.NewEditIndex].Value.ToString()); int userID = int.Parse(gv2.DataKeys[e.NewEditIndex].Values["userid"].ToString()); gv2.DataSource = getCars(userID); gv2.DataBind(); } /// <summary> /// 子GridView2的取消编辑状态 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView2_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView gv2 = (GridView)sender; gv2.EditIndex = -1; int userID = int.Parse(gv2.DataKeys[e.RowIndex].Values["userid"].ToString()); gv2.DataSource = getCars(userID); gv2.DataBind(); } /// <summary> /// 弹出详细页面的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void LinkButton1_Command(object sender, CommandEventArgs e) { int userID = int.Parse(e.CommandArgument.ToString()); LinkButton lb = (LinkButton)sender; GridView detailGV = (GridView)lb.Parent.FindControl("DetailGridView"); detailGV.DataSource = getCars(userID); detailGV.DataKeyNames = new string[] { "id", "userid" }; detailGV.DataBind(); ModalPopupExtender mpe = (ModalPopupExtender)lb.Parent.FindControl("ModalPopupExtender1"); mpe.Enabled = true; mpe.Show(); } /// <summary> /// 更新用户的汽车的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void UserCarUpdateButton_OnClick(object sender, EventArgs e) { Button updateButton = (Button)sender; GridView gv = (GridView)updateButton.Parent.FindControl("DetailGridView"); CarDao carDao = new CarDao(); //取得全部的汽车的信息 逐个更新 for (int i = 0; i < gv.Rows.Count; i++) { GridViewRow row = gv.Rows[i]; string userID = ((TextBox)row.Cells[0].FindControl("TB_UserID")).Text.Trim(); string carID = ((TextBox)row.Cells[1].FindControl("TB_CarID")).Text.Trim(); string carName = ((TextBox)row.Cells[1].FindControl("TB_CarName")).Text.Trim(); //这里应该作更新的操作 carDao.updateCarLinq(new Car { id = int.Parse(carID), name = carName, userid = int.Parse(userID)}); } ModalPopupExtender mpe = (ModalPopupExtender)gv.Parent.FindControl("ModalPopupExtender1"); mpe.Enabled = false; //更新后 重新更新一下页面 initPage(); this.UpdatePanel2.Update(); } }
vs 2008 下测试通过
发表评论
-
C# 根据模版写Excel(Com)二
2008-11-18 12:57 2656《C# 根据模版写Excel(Com)一 》 里给出写Ex ... -
c# 通过反射 实例化类
2008-11-17 16:09 38831. 用Type 在 website 下 string ... -
GridView 嵌套 ObjectDataSource数据源绑定
2008-11-11 15:53 2809这个方法是目前我知道的最好的绑定嵌套的GridView方法了。 ... -
c# 根据模版写Excel(Com) 一
2008-10-31 17:29 3802原理很简单: 1 copy模版文件到临时文件夹,并改名 ... -
C# 线程同步
2008-10-31 10:57 1149原文地址 http://www.cnblogs.com/m ... -
让ajax 控件先执行服务端事件
2008-10-28 15:51 1371这里用的是 一个 ModalPopupExtender 控件 ... -
net 常用正则
2008-10-23 13:35 843从别人那里 copy过来的 http://www.cnbl ... -
gridview排序
2008-10-14 13:58 4448在GridView中可以通过两种方式来指定模板列的标题: ... -
gridview 学习
2008-10-08 15:04 1038一个对象A里 包含另一个对象B时 要在gridview里帮定 ...
相关推荐
在这个“GridView嵌套应用实例”中,我们将深入探讨如何实现GridView的嵌套使用,以达到更复杂的数据显示和交互效果。 首先,GridView控件的主要特点是易于使用和高度可定制化。它支持分页、排序、筛选、编辑和删除...
在标题".net GridView嵌套 EditNestedGridView"中提到的概念,指的是在GridView内部嵌套另一个GridView,实现数据的多级展示和编辑功能。这种技术常用于处理具有层次结构的数据,例如员工与他们的下属、产品与子产品...
在本文中,我们将深入探讨如何实现一个简单的三层结构,即GridView嵌套DropDownList的实际案例。这个实例适用于那些希望在网页上展示分层数据,并允许用户通过下拉菜单进行交互的开发者。 首先,三层GridView嵌套...
本主题将深入探讨如何实现“gridview”的三重嵌套,并通过C#编程语言来详细讲解Edit事件的运用,以实现点击展开下一层GridView的功能。 首先,我们需要理解GridView的基本用法。GridView是一个服务器控件,它可以...
然而,当需求变得更加复杂时,我们可能需要在一个GridView内嵌套另一个GridView,形成所谓的“嵌套GridView”,以此来展示层次化的数据结构。在这样的场景下,“嵌套中的gridview单元格编辑”就成为一个关键的技术点...
在ASP.NET开发中,...这个实例"GridView嵌套应用实例"将提供具体的代码示例和详细说明,帮助开发者理解和实现这一功能。对于那些希望在ASP.NET项目中提供更丰富数据展示的开发者来说,这是一个非常有价值的资源。
TemplateField可以包含HTML控件、服务器控件,甚至可以嵌套其他的GridView,从而提供丰富的布局和功能。 5. **分页和排序**: GridView支持内置的分页和排序功能。只需简单地设置AllowPaging和AllowSorting属性为...
10. **嵌套GridView**:在一个GridView内嵌套另一个GridView,以展示层次化数据。 综上所述,GridView控件提供了丰富的功能和灵活性,适用于各种数据展示和操作场景。通过熟练掌握其基本用法和进阶技巧,可以创建出...
6. **多层嵌套**:在复杂的Web应用中,有时我们需要在GridView内部嵌套其他数据控件,如另一个GridView或DetailsView,以展示层级数据。这可以通过使用TemplateField和嵌套的数据绑定实现。 7. **自定义样式和模板*...
11. **Ajax更新**:结合UpdatePanel和AJAX技术,GridView的更新可以不刷新整个页面,提供更好的用户体验。 12. **自定义行创建**:使用RowCreated事件,可以在GridView创建行时执行自定义逻辑,例如添加自定义属性...
可以在GridView的某一行中嵌套另一个GridView,展示子数据集。通过`TemplateField`的`ItemTemplate`添加子GridView,并在父GridView的`RowDataBound`事件中填充子数据。 8. **数据绑定优化** 对于大数据集,可...
如果需要更高级的功能,比如条件格式化、嵌套GridView或使用Ajax进行异步操作,可以利用`RowCreated`、`RowDataBound`等事件编写自定义代码。 总之,GridView是ASP.NET中展示数据的强大工具,通过熟练掌握其基本...
通过使用模板列和嵌套GridView,可以创建出具有层级关系的表格,模拟TreeGrid的效果。 4. **无刷新(Ajax)技术**:无刷新是现代Web应用的重要特性,它通过在后台更新数据,使用户无需等待整个页面刷新即可看到变化...
"Gridview中的textbox按回车或者上下键自动下移,无刷新弹出层"这一技术点是提高用户体验的一种有效方法,它涉及到JavaScript、AJAX、HTML以及CSS等多个方面的知识。 首先,让我们详细了解这个功能的工作原理: 1....
8. Ajax集成:如果项目使用了ASP.NET AJAX,GridView可以与UpdatePanel配合,实现部分页面更新,提高用户体验。 9. 绑定表达式:在GridView中,数据字段可以使用绑定表达式(例如 ("FieldName") %>)来显示来自数据...
9. **AJAX集成**:探讨使用AJAX技术(如UpdatePanel或jQuery)增强GridView的用户体验,实现异步刷新和无刷新操作。 10. **数据导出**:学习将GridView的数据导出为Excel、CSV或其他格式,提供数据导出功能。 11. ...
在传统的GridView中,数据通常是二维的,但在结合了jQuery的TreeGrid中,我们可以展示层次化的数据,这在处理组织结构、目录树或有嵌套关系的数据时非常有用。 接下来,jQuery是一个轻量级的JavaScript库,它简化了...
在实际项目中,GridView控件通常与其他控件(如ButtonField、LinkButton等)和功能(如Ajax更新、模板列)结合使用,以提供丰富的用户体验。通过对这些知识点的深入理解和实践,开发者可以充分利用GridView的强大...