<%...@ Page Language="C#" %>
<%...@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">...
ICollection CreateDataSource()
...{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("id", typeof(Int32)));
dt.Columns.Add(new DataColumn("text", typeof(string)));
for (int i = 0; i < 6; i++)
...{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "列表项目 " + i.ToString();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
public class GridViewTemplate : ITemplate
{
private DataControlRowType templateType;
private string columnName;
public GridViewTemplate(DataControlRowType type, string colname)
{
templateType = type;
columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnName;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
TextBox tb = new TextBox();
tb.ID = "ItemNum";
tb.Width = 50;
tb.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(tb);
break;
default:
break;
}
}
public void OnDataBinding(object sender, EventArgs e)
{
TextBox l = (TextBox)sender;//TextBox发送绑定请求
GridViewRow container = (GridViewRow)l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)["ItemNum"].ToString();//绑定ItemNum字段
}
}
protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{
TemplateField customField = new TemplateField();
customField.ShowHeader = true;
customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "动态添加列");
customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
GridView1.Columns.Add(customField);
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
}
}
protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e )
...{
if (e.Row.RowType == DataControlRowType.DataRow)
...{
//可以在这里访问数据库的其它字段的值,可以设置默认选择项,具体应用,看自己的发挥了。
//下面只是例子,举一反三,不再费话了
DataRowView gv = (DataRowView)e.Row.DataItem;
int itemSeleted = Int32.Parse(gv.Row["id"].ToString()) > 3 ? 0 : Int32.Parse(gv.Row["id"].ToString());
DropDownList dr = (DropDownList)e.Row.FindControl("dropdown");
dr.SelectedIndex = itemSeleted;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>GridView动态添加模板列的例子</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField HeaderText="标题" DataField="text"/>
</Columns>
</asp:GridView>
</form>
</body>
</html>
动态添加的TextBox,PostBack之后就没有了,要取得用户在里面输入的值,要用Request.Form[###]
其中的###需要填入的是控件在客户端的name属性
幸好,虽然嵌套在模版列里的TextBox的name是自动生成的,但终归有规律可循:
假设GridView控件的ID是GridView1,动态添加的TextBox控件的ID是MyText,那么:
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
string txtName = "GridView1$ctl"+(i+2).ToString().PadLeft(2,'0')+"$MyText";
if(Request.Form[txtName]!=null)
{
Response.Write(Request.Form[txtName] + "<br/>");
}
}
}
分享到:
相关推荐
本教程将深入探讨ASP.NET 2.0的核心特性,以及如何利用这些特性进行动态网站的开发。 一、ASP.NET 2.0概述 ASP.NET 2.0是ASP.NET的第二个主要版本,相比1.0版,它引入了许多新特性和改进。这些改进包括:更高效的...
4. **Web Forms**:Web Forms是ASP.NET 2.0中的一个主要开发模型,它允许开发者使用控件驱动的方式来构建动态Web应用。Web Forms控件与Windows Forms控件类似,可以响应用户交互并更新视图。 5. **控件**:ASP.NET ...
在ASP.NET 2.0中操作数据:为GridView控件添加Checkboxes列(源码)
这个示例网站包含了论坛、民意调查、文章管理以及电子商务等常见功能,读者可以通过这个案例学习到如何在实际项目中运用ASP.NET 2.0。 书中强调了如何利用ASP.NET 2.0的内置功能来减少编程工作量,比如主题、成员...
2. **控件和事件模型**:在ASP.NET 2.0中,服务器控件提供了一种直观的方式来创建动态网页。学习者将了解如何使用各种内置控件,如文本框、按钮、复选框等,并理解控件之间的事件交互,如点击事件、提交事件等。 3....
ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它建立在.NET Framework的基础之上,为开发者提供了丰富的功能和高效的语言支持。本资源"ASP.NET 2.0网络编程从入门到精通-修订"显然是一个教程文档,旨在...
2. **控件与数据绑定**:书中会详细介绍ASP.NET 2.0的各种服务器控件,如GridView、DetailsView、FormView等,以及如何利用数据绑定机制(例如,DataSource控件)来连接数据库并展示数据。 3. **状态管理**:ASP...
此"天轰穿ASP.NET2.0视频教程"针对初学者和进阶开发者,通过详细的教学指导,帮助用户掌握ASP.NET 2.0的核心概念和技术。 1. **ASP.NET 2.0架构** ASP.NET 2.0基于.NET Framework 2.0,引入了统一的页面生命周期...
ASP.NET 2.0 中编程实现 GridView 与 FormView 的主-详细视图 在 ASP.NET 2.0 中,GridView 控件和 FormView 控件都是非常重要的控件,通常用于显示数据。GridView 控件提供了一个表格视图,显示多条记录的主要信息...
ASP.NET 2.0是微软.NET Framework的一部分,它提供了一个用于构建动态网站、Web应用程序和服务的强大平台。本教程源文件基于C# 2005编程语言,旨在帮助初学者和开发者掌握ASP.NET 2.0的核心概念和技术。 在ASP.NET ...
ASP.NET 2.0是微软开发的一个强大的Web应用程序框架,用于构建动态网站、Web应用程序和服务。在该框架中,静态页生成技术是一个重要的优化手段,它有助于提高网站的性能和搜索引擎优化(SEO)。本篇文章将深入探讨...
本教程重点讲解如何利用ASP.NET 2.0进行动态网站设计,适合初学者和有一定基础的开发者学习。教程由李春葆老师编著,包含了丰富的课件和代码示例。 1. **ASP.NET 2.0核心概念**:ASP.NET 2.0引入了诸如页面生命周期...
ASP.NET 2.0是微软推出的Web应用程序开发框架,它基于.NET Framework,为开发者提供了构建动态网站、Web应用和Web服务的强大工具。本资源“ASP.NET 2.0入门经典(第4版)源码”提供了该书配套的源代码,帮助初学者深入...
在ASP.NET 2.0版本中,引入了许多新特性,如改进的页面生命周期管理、母版页(Master Pages)用于统一网站布局、自定义控件增强用户体验、配置管理工具简化部署过程、以及ASP.NET AJAX框架实现页面无刷新交互等。...
在ASP.NET 2.0中,开发者可以使用Visual Studio或其他支持的IDE来快速构建Web应用程序,了解如何设置项目结构、配置IIS以及处理部署问题都是至关重要的。这一部分可能会讲解如何配置Web.config文件,定义应用程序的...
书中会详细介绍各种服务器控件,如文本框、按钮、列表框等,以及数据绑定控件如GridView和FormView,这些都是构建动态网页的关键元素。此外,ASP.NET 2.0还引入了AJAX支持,使得无需刷新整个页面就能更新部分内容,...
"济南招贴网(.net2.0)"这个文件可能是一个使用ASP.NET 2.0开发的网站源代码,包含了构建类似分类广告网站所需的所有文件和设置。源码分析可以帮助我们理解如何在实际项目中应用上述ASP.NET 2.0特性,学习网站架构...
ASP.NET 2.0引入了多种新的服务器端控件,比如GridView和DetailsView,用于数据绑定和显示。OWC(Office Web Components)控件是服务器端ActiveX控件,而在ASP.NET 2.0中,服务器端控件与客户端控件(如HTML控件)...
4. 状态管理:介绍Session、ViewState和Cookie等状态管理机制,以及在ASP.NET 2.0中如何有效地使用它们。 5. 文件上传与下载:实现文件上传和下载功能,涉及文件操作和流处理,以及与数据库的交互。 6. 错误处理与...