`
yyzhpq
  • 浏览: 310926 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ASP.NET 2.0 中动态添加 GridView 模板列 以及取值的例子

阅读更多

<%...@ 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 2.0是ASP.NET的第二个主要版本,相比1.0版,它引入了许多新特性和改进。这些改进包括:更高效的...

    ASP.NET 2.0入门经典:C#编程篇.pdf

    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中操作数据:为GridView控件添加Checkboxes列(源码)

    ASP.NET2.0网站开发全程解析[收集].pdf

    这个示例网站包含了论坛、民意调查、文章管理以及电子商务等常见功能,读者可以通过这个案例学习到如何在实际项目中运用ASP.NET 2.0。 书中强调了如何利用ASP.NET 2.0的内置功能来减少编程工作量,比如主题、成员...

    ASP.NET 2.0程序设计案例教程(课件)

    2. **控件和事件模型**:在ASP.NET 2.0中,服务器控件提供了一种直观的方式来创建动态网页。学习者将了解如何使用各种内置控件,如文本框、按钮、复选框等,并理解控件之间的事件交互,如点击事件、提交事件等。 3....

    ASP.net 2.0网络编程从入门到精通-修订.rar

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它建立在.NET Framework的基础之上,为开发者提供了丰富的功能和高效的语言支持。本资源"ASP.NET 2.0网络编程从入门到精通-修订"显然是一个教程文档,旨在...

    Programming Microsoft ASP.NET 2.0 Applications - Advanced Topics

    2. **控件与数据绑定**:书中会详细介绍ASP.NET 2.0的各种服务器控件,如GridView、DetailsView、FormView等,以及如何利用数据绑定机制(例如,DataSource控件)来连接数据库并展示数据。 3. **状态管理**:ASP...

    天轰穿ASP.NET2.0视频教程代码(共两部份)

    此"天轰穿ASP.NET2.0视频教程"针对初学者和进阶开发者,通过详细的教学指导,帮助用户掌握ASP.NET 2.0的核心概念和技术。 1. **ASP.NET 2.0架构** ASP.NET 2.0基于.NET Framework 2.0,引入了统一的页面生命周期...

    ASP.NET2.0中编程实现GridView与FormView的主-详细视图

    ASP.NET 2.0 中编程实现 GridView 与 FormView 的主-详细视图 在 ASP.NET 2.0 中,GridView 控件和 FormView 控件都是非常重要的控件,通常用于显示数据。GridView 控件提供了一个表格视图,显示多条记录的主要信息...

    ASP.NET 2.0动态网站开发基础教程(C# 2005)源文件

    ASP.NET 2.0是微软.NET Framework的一部分,它提供了一个用于构建动态网站、Web应用程序和服务的强大平台。本教程源文件基于C# 2005编程语言,旨在帮助初学者和开发者掌握ASP.NET 2.0的核心概念和技术。 在ASP.NET ...

    深入挖掘ASP.NET 2.0系列课程(11):ASP.NET 中的静态页生成技术

    ASP.NET 2.0是微软开发的一个强大的Web应用程序框架,用于构建动态网站、Web应用程序和服务。在该框架中,静态页生成技术是一个重要的优化手段,它有助于提高网站的性能和搜索引擎优化(SEO)。本篇文章将深入探讨...

    ASP.NET 2.0动态网站设计教程

    本教程重点讲解如何利用ASP.NET 2.0进行动态网站设计,适合初学者和有一定基础的开发者学习。教程由李春葆老师编著,包含了丰富的课件和代码示例。 1. **ASP.NET 2.0核心概念**:ASP.NET 2.0引入了诸如页面生命周期...

    ASP.NET 2.0入门经典(第4版)源码

    ASP.NET 2.0是微软推出的Web应用程序开发框架,它基于.NET Framework,为开发者提供了构建动态网站、Web应用和Web服务的强大工具。本资源“ASP.NET 2.0入门经典(第4版)源码”提供了该书配套的源代码,帮助初学者深入...

    ASP.NET2.0+sql server 网络应用开发详解

    在ASP.NET 2.0版本中,引入了许多新特性,如改进的页面生命周期管理、母版页(Master Pages)用于统一网站布局、自定义控件增强用户体验、配置管理工具简化部署过程、以及ASP.NET AJAX框架实现页面无刷新交互等。...

    asp.net 2.0 宝典

    在ASP.NET 2.0中,开发者可以使用Visual Studio或其他支持的IDE来快速构建Web应用程序,了解如何设置项目结构、配置IIS以及处理部署问题都是至关重要的。这一部分可能会讲解如何配置Web.config文件,定义应用程序的...

    ASP.NET 2.0网络编程自学手册

    书中会详细介绍各种服务器控件,如文本框、按钮、列表框等,以及数据绑定控件如GridView和FormView,这些都是构建动态网页的关键元素。此外,ASP.NET 2.0还引入了AJAX支持,使得无需刷新整个页面就能更新部分内容,...

    asp.net2.0全站源码

    "济南招贴网(.net2.0)"这个文件可能是一个使用ASP.NET 2.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控件)...

    精通ASP.NET2.0+SQL Server 2005项目开发 源码.rar

    4. 状态管理:介绍Session、ViewState和Cookie等状态管理机制,以及在ASP.NET 2.0中如何有效地使用它们。 5. 文件上传与下载:实现文件上传和下载功能,涉及文件操作和流处理,以及与数据库的交互。 6. 错误处理与...

Global site tag (gtag.js) - Google Analytics