原创:用UpdatePanel异步展开GridView行数据
2009-12-10 15:36
525 查看
在MIS系统中经常用到查询出数据列表后,展开及收缩详细信息操作,下面介绍一种非常直观的异步展开方式,异步的展开方式同时也可以减轻系统压力:
步骤:
1.在你的aspx页面头部注册System.Web.Extensions
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
2.在form表单里加入ScriptManager
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
3.在GridView外嵌套一个UpdatePanel,并指定局部刷新Triggers属性值
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="gvDemand" runat="server" Width="100%" AutoGenerateColumns="False" DataKeyNames="ID" OnRowCommand="gvDemand_RowCommand">
/**此处为GridView里的内容...脚本有点多,页面全部html代码请点这里下载**/
此处要注意的地方就是展开部分ID的命名,默认为不显示
</GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvDemand" EventName="RowCommand" />
</Triggers>
</asp:UpdatePanel>
4.接下来编写服务器端代码gvDemand_RowCommand
代码
protected void gvDemand_RowCommand(object sender, GridViewCommandEventArgs e)
{
string rowIndex = e.CommandArgument.ToString();
switch (e.CommandName.ToLower())
{
case "showdetail": //显示详细信息
int index = 0;
if (int.Parse(rowIndex) % pager.PageSize == 0)
{ index = pager.PageSize - 1; }
else
{ index = (int.Parse(rowIndex) % pager.PageSize) - 1; }
HtmlTableRow trShowDetail = (HtmlTableRow)gvDemand.Rows[index].FindControl("trShowDetail");
if (trShowDetail != null)
{
if (trShowDetail.Visible == false)
{
trShowDetail.Visible = true;
//流程控件处理
WorkFlow.UserControl.ActionToolBar flowBar = ((WorkFlow.UserControl.ActionToolBar)gvDemand.Rows[index].FindControl("ActionToolBar1"));
if (flowBar != null)
{
flowBar.BindFlowData();
}
}
else
{
trShowDetail.Visible = false;
}
}
break;
default:
break;
}
}
5.效果图(点击单据编号即可异步展开下面的详细信息及流程审批信息,再次点击收缩):
OK,到此结束,大家是否有更好的方式来处理呢?欢迎探讨....
步骤:
1.在你的aspx页面头部注册System.Web.Extensions
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
2.在form表单里加入ScriptManager
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
3.在GridView外嵌套一个UpdatePanel,并指定局部刷新Triggers属性值
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="gvDemand" runat="server" Width="100%" AutoGenerateColumns="False" DataKeyNames="ID" OnRowCommand="gvDemand_RowCommand">
/**此处为GridView里的内容...脚本有点多,页面全部html代码请点这里下载**/
此处要注意的地方就是展开部分ID的命名,默认为不显示
</GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvDemand" EventName="RowCommand" />
</Triggers>
</asp:UpdatePanel>
4.接下来编写服务器端代码gvDemand_RowCommand
代码
protected void gvDemand_RowCommand(object sender, GridViewCommandEventArgs e)
{
string rowIndex = e.CommandArgument.ToString();
switch (e.CommandName.ToLower())
{
case "showdetail": //显示详细信息
int index = 0;
if (int.Parse(rowIndex) % pager.PageSize == 0)
{ index = pager.PageSize - 1; }
else
{ index = (int.Parse(rowIndex) % pager.PageSize) - 1; }
HtmlTableRow trShowDetail = (HtmlTableRow)gvDemand.Rows[index].FindControl("trShowDetail");
if (trShowDetail != null)
{
if (trShowDetail.Visible == false)
{
trShowDetail.Visible = true;
//流程控件处理
WorkFlow.UserControl.ActionToolBar flowBar = ((WorkFlow.UserControl.ActionToolBar)gvDemand.Rows[index].FindControl("ActionToolBar1"));
if (flowBar != null)
{
flowBar.BindFlowData();
}
}
else
{
trShowDetail.Visible = false;
}
}
break;
default:
break;
}
}
5.效果图(点击单据编号即可异步展开下面的详细信息及流程审批信息,再次点击收缩):
OK,到此结束,大家是否有更好的方式来处理呢?欢迎探讨....
相关文章推荐
- 用UpdatePanel异步展开GridView行数据
- 用UpdatePanel异步展开GridView行数据
- 利用UpdatePanel+Timer 控件自动更新Gridview的数据
- Gridview Row事件响应方法无法获取其它UpdatePanel中控件数据的解决办法
- asp.net之GridView+UpdatePanel异步刷新
- [Ext.Net]TreePanel 异步加载数据
- 解决类型“System.Web.UI.UpdatePanel”不具有名为“Gridview”的公共属性,
- Asp.net-UpdatePanel异步刷新后JS失效的解决方法
- 【Vegas原创】GridView跨页选择多行数据,并循环添加一行DataSet数据
- 用外部按钮更新UpdatePanel 里的GridView
- extjs 3.x简单的异步树 并实现展开时重新加载数据的实现
- gridview+updatePanel 换页
- UpdatePanel 和 Repeater实现页面局部数据无刷新 (asp.net C#)
- [原创]JQuery的autoCompleate插件的使用(内含解决Jquery事件与UpdatePanel互斥的问题,只需要在body中改为如下:<body onload=’load()’></body>即可)
- 转 在UpdatePanel中GridView导出EXCEL问题
- ExtJS panel展开时加载数据或页面
- Updatepanel gridview与ClienIdMode
- ASP.NET的GridView在UpdatePanel里导出Excel的语句
- Asp .NET使用控件常见问题大全(设计时选中、Button、TextBox、DropDownList、GridView、UpdatePanel 等)
- 让UpdatePanel支持文件上传(4):数据传输与解析机制