- 浏览: 109192 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
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 2611《C# 根据模版写Excel(Com)一 》 里给出写Ex ... -
c# 通过反射 实例化类
2008-11-17 16:09 38331. 用Type 在 website 下 string ... -
GridView 嵌套 ObjectDataSource数据源绑定
2008-11-11 15:53 2756这个方法是目前我知道的最好的绑定嵌套的GridView方法了。 ... -
c# 根据模版写Excel(Com) 一
2008-10-31 17:29 3740原理很简单: 1 copy模版文件到临时文件夹,并改名 ... -
C# 线程同步
2008-10-31 10:57 1080原文地址 http://www.cnblogs.com/m ... -
让ajax 控件先执行服务端事件
2008-10-28 15:51 1325这里用的是 一个 ModalPopupExtender 控件 ... -
net 常用正则
2008-10-23 13:35 807从别人那里 copy过来的 http://www.cnbl ... -
gridview排序
2008-10-14 13:58 4389在GridView中可以通过两种方式来指定模板列的标题: ... -
gridview 学习
2008-10-08 15:04 999一个对象A里 包含另一个对象B时 要在gridview里帮定 ...
相关推荐
实例224 嵌套GridView控件实现商品信息 明细表 354 实例225 将GridView控件的数据导出到Excel 并进行格式化 355 实例226 将Excel中数据导入到Aceess 并绑定GridView 356 实例227 将GridView中绑定的Access数据 生成...
在这里,我将解释如何将Gridview放在其他类别(例如类别和产品)中。
7.3.6 嵌套查询 7.3.7 插入记录并返回ID 7.3.8 同时更新多条记录 7.3.9 根据条件删除记录 7.4 存储过程 7.4.1 使用存储过程添加数据 7.4.2 使用存储过程查询数据 7.4.3 使用存储过程更新数据 7.4.4 使用...
7.2 Ajax和用户控件 214 7.3 动态加载用户控件 215 7.3.1 使用引用指令 216 7.3.2 创建多页面向导 220 7.4 小结 226 第三部分 数据访问 第8章 数据访问概述 228 8.1 使用DataBound控件 228 8.1.1 使用列表控件 228 ...
11.1.9 在gridview控件中使用viewstate397 11.2 在gridview控件中使用字段398 11.2.1 使用boundfield398 11.2.2 使用checkboxfield401 11.2.3 使用commandfield402 11.2.4 使用buttonfield404 11.2.5 使用...
12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2 简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2 制作页面 12.4.1 创建ASPX 页面 12.4.2 创建CSS 层叠...
此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。 ...
12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式...
12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式...
12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式...
12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式...
12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式...
此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。 ...
asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型打造可复用的抽象工厂 泛型技巧系列:如何提供类型参数之间的转换 .NET 2.0 ...
21.6 使用DOM判断页面中控件是否嵌套 21.7 使用DOM获取页面中某控件的属性 21.8 将某行排在表格的最后 21.9 动态删除页面中的元素 21.10 克隆表格 21.11 拖动表格行改变顺序 21.12 表格操作常用方法 第22章 流行应用...
21.6 使用DOM判断页面中控件是否嵌套 21.7 使用DOM获取页面中某控件的属性 21.8 将某行排在表格的最后 21.9 动态删除页面中的元素 21.10 克隆表格 21.11 拖动表格行改变顺序 21.12 表格操作常用方法 第22章 流行应用...