• [系列文章]上传文件管理控件v2


    一、引言:
    开发v1的时候,遇到很多困难(因为我是新手),于是就上网找了一些资料。
    其中,这篇《数据绑定的总结 》文章(http://www.cnblogs.com/qingtianyzl/articles/351012.html)被我看到了,里面有把数组绑定到DataGrid的方法。将里面的一部分代码复制过来,修改一下,就完成了基本的功能。
    二、基本原理
    dataGrid是asp.net 1.x中用来显示网格式数据的服务器控件,可能通过绑定的方式,把DataTable(数据表)里的内容放置到dataGrid。
    那么DataTable是哪来的呢?最基本的来源,是通过连接数据库,打开表获得。(这也是大多数课本上讲的)那么,如果像我这样,所要展示的不是来自于数据库的内容怎么办?我就想到,能不能把数组绑定的dataGrid上呢?在网上找了一些资料,没有结果,却从上面提到的那篇文章里找到了另外的思路:用程序生成一个空的DataTable,再创建Field(在asp.net里叫做列DataColumn),然后把数据填充进去。
    晴天,在代码里的注释说得很详细,所以我这里就不我啰嗦了。
    三、附源代码

      1<%@ Control Language="C#" ClassName="ListUpload_v2" %>
      2<%@ Import Namespace="System.IO" %>
      3<%@ Import namespace="System.Data" %>
      4
      5<script runat="server">
      6    /**************************************************************** 
      7     **上传文件管理控件
      8     **文件名:ListUpload_v2.ascx  
      9     **Copyrigth(c) 2008-2010   *************** 柳城别日 xpnew.cnblogs.com
     10     **文件编号:
     11     **创建人:柳城别日
     12     **日期:2008年5月22日
     13     **修改人:柳城别日
     14     **日期:2008年5月22日
     15     * 描述:用来管理上传文件,支持列表、删除
     16     **/

     17
     18    //
     19
     20    /* class ListUpload2
     21     {
     22     }
     23     * 
     24     *
     25     * */

     26    // 类内部初始化
     27    private string _strDir = @"~/Upload/";
     28    
     29    
     30    public string strDir//通过这个属性,可以设置控件所要管理的目录
     31    {
     32        get
     33        {
     34            return _strDir;
     35        }

     36        set
     37        {
     38            _strDir = value;
     39        }

     40    }

     41    
     42    protected void Page_Load(object sender, EventArgs e)
     43    {
     44        if (!Page.IsPostBack)
     45        {
     46
     47            //--------------------------------
     48            //下面是从网上找到的代码:
     49            
     50            DataTable dt = new DataTable();
     51            //dt为声明一个表
     52
     53            DataRow dr;
     54            //表示Table中行的数据
     55
     56            dt.Columns.Add(new DataColumn("IntegerValue"typeof(Int32)));
     57            dt.Columns.Add(new DataColumn("StringValue"typeof(string)));
     58            dt.Columns.Add(new DataColumn("DateTimeValue"typeof(DateTime)));
     59            dt.Columns.Add(new DataColumn("BooleanValue"typeof(bool)));
     60            //Columns为取值该表列的集合,
     61            //Add.为该表添加到列的集合 DataColumn为列框架
     62            //后面是列头的标题,后面表示该列的数据类型
     63
     64
     65
     66            for (int i = 1; i <= 9; i++)
     67            {
     68
     69                dr = dt.NewRow();
     70                //创建与该表具有相同框架新的数据行
     71
     72
     73                dr[0= i;
     74                dr[1= "Item " + i.ToString();
     75                dr[2= DateTime.Now;
     76                dr[3= (i % 2 != 0? true : false;
     77                //为数据行添加数值
     78                dt.Rows.Add(dr);
     79                //把获得数值的指定的行加到该表的集合
     80            }

     81
     82            //   dataGrid1.DataSource = new DataView(dt);
     83            //把该表作为数据源 放到dataGrid1中
     84            //  dataGrid1.DataBind();//数据绑定被我注释了
     85            
     86
     87            //网上的代码结束
     88            //------------------
     89            
     90            //-------------------我自己的代码开始
     91            
     92            DataTable FileList = new DataTable();
     93            //FileList为声明一个表
     94
     95            DataRow FileItem;
     96            //表示Table中行的数据
     97            
     98                       
     99            FileList.Columns.Add(new DataColumn("选择"typeof(bool)));
    100            FileList.Columns.Add(new DataColumn("文件名"typeof(string)));
    101            FileList.Columns.Add(new DataColumn("大小(字节)"typeof(Int32)));
    102            FileList.Columns.Add(new DataColumn("上传日期"typeof(DateTime)));
    103            //Columns为取值该表列的集合,
    104            //Add.为该表添加到列的集合 DataColumn为列框架
    105            //前面是列头的标题,后面表示该列的数据类型----这是别人的注释
    106            //我认为前面不单单是标题那么简单,在v4里后详细地说明
    107
    108                        
    109            string dirPath = Server.MapPath(strDir);
    110            DirectoryInfo Dir = new DirectoryInfo(dirPath);
    111            FileInfo[] arrFiles = Dir.GetFiles();
    112
    113            foreach (FileInfo f in arrFiles)
    114            {
    115                FileItem = FileList.NewRow();
    116                //创建与该表具有相同框架新的数据行
    117                FileItem[0= false;
    118                FileItem[1= f.Name;
    119                FileItem[2= f.Length;
    120                FileItem[3= f.LastWriteTime;
    121                //为数据行添加数值
    122
    123                FileList.Rows.Add(FileItem);
    124                //把获得数值的指定的行加到该表的集合
    125
    126            }

    127
    128            dataGrid2.DataSource = new DataView(FileList);
    129            //把该表作为数据源 放到dataGrid2中
    130            dataGrid2.DataBind();
    131            //绑定
    132        }

    133
    134    }

    135
    136
    137
    138</script>
    139
    140<asp:DataGrid ID="dataGrid2" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3"
    141    CellSpacing="0" GridLines="Both" HeaderStyle-BackColor="#aaaadd" >
    142</asp:DataGrid>
    143
  • 相关阅读:
    【convertio.co】免费在线文档转化神器
    成长需熬过“四苦”
    岁月饶过谁
    致我的未来
    一定要相信自己
    奋斗的意义是什么?
    一生一世一双人,半醉半醒半浮生
    逆境中的自己
    怎样才能让人看到你呢
    2020 遇见更好的自己
  • 原文地址:https://www.cnblogs.com/xpnew/p/1206252.html
Copyright © 2020-2023  润新知