[英语阅读笔记]Creating Master Detail Pages using GridView
原文地址:http://www.dotnetbips.com/articles/4c3cc1c7-795e-4058-a741-e8e1de6d90a9.aspx
作者:Bipin Joshi
这篇文章与我之前对于Master-Detail方式的实现有所不同,而是在GridView中用GridView来显示Detail。效果如下:
文章中的实现,首先在GridView中添加两个模板列,一个用来绑定字段显示信息用,一个用来放置按钮。这个按钮里要设置CommandName属性以配合下面的一段代码。
这个按钮要实现的功能是在点击它的时候当前行展开并且在前面的绑定列中显示一个GridView来显示关联信息。
然后编辑第一个模板列,除了添加两个Label显示信息外,另加一个SqlDatasource和GridView.
实现的关键点是让里面的这个SqlDatasource接收到外面这个GridView行里传递过来的参数,依靠以下的两个代码片断:
private int index = 0;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button b = (Button)e.Row.Cells[1].FindControl("Button1");
b.CommandArgument = index.ToString();
index=index+1;
}
}
这个代码是在外面的GridView中行被绑定的时候触发的,还有一个代码:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Show")
{
Button b = (Button)GridView1.Rows[int.Parse (e.CommandArgument.ToString())].Cells[1]. FindControl("Button1");
if (b.Text == "Show")
{
string custid = GridView1.DataKeys[int.Parse (e.CommandArgument.ToString())].Value.ToString();
SqlDataSource sds = (SqlDataSource)GridView1. Rows[int.Parse(e.CommandArgument.ToString())]. FindControl("SqlDataSource2");
GridView gv = (GridView)GridView1.Rows[int.Parse (e.CommandArgument.ToString())].FindControl("GridView2");
sds.SelectParameters[0].DefaultValue = custid;
gv.Visible = true; b.Text = "Hide";
}
else
{
GridView gv = (GridView)GridView1.Rows[int.Parse (e.CommandArgument.ToString())].FindControl("GridView2");
gv.Visible = false;
b.Text = "Show";
}
}
}
很佩服老外的想象力,看他们的一些问题的实现总能悟到很多东西。
---------------------------------------------------------------
aspnetx的BI笔记系列索引:
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能
---------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构