正文

动态添加GridView模板列2007-07-25 11:43:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tiay/27865.html

分享到:

代码  <%@ 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:           DropDownList drr = new DropDownList();           drr.ID = "dropdown";           drr.AppendDataBoundItems = true;           drr.Items.Add(new ListItem("-----请选择------",""));           drr.Items.Add(new ListItem("AA", "a"));           drr.Items.Add(new ListItem("BB", "b"));           drr.Items.Add(new ListItem("CC", "c"));           container.Controls.Add(drr);           break;         default:          break;       }     }   }      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>

阅读(2625) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册