• 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:
              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>
  • 相关阅读:
    ibatis.net:惯用法
    ibatis.net:在VS中支持xml智能提示
    设计原则:色彩
    编码原则:“防御式编程”再次让我快乐
    错误:update 忘了加 where
    .NET:不要使用扩展方法扩展Object对象。
    错误:不小心的VS重命名
    技术人生:如何更有效率的切换上下文?
    Logstash filter 插件之 grok
    轻松测试 logstash 的配置文件
  • 原文地址:https://www.cnblogs.com/ziyan22/p/681486.html
Copyright © 2020-2023  润新知