首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

新手:listview或datagridview实现自动多列方法

2012-03-23 
新手求助:listview或datagridview实现自动多列方法该软件的作用是简单的通讯录,只有联系人和联系电话,为了

新手求助:listview或datagridview实现自动多列方法
该软件的作用是简单的通讯录,只有联系人和联系电话,为了便于打印出a4
  软件要求: 当第一,二列联系人达到一定的行数自动生成第三,四列,以此类推.
  希望哪个兄弟给我思路,最好是案例,谢谢
  看下图


[解决办法]
很简单,就是原来你用一行两列来显示100条数据,那么就是100行

你现在想用25行来显示这些数据,那么 就需要 100/25*2 列

把数据弄成这个样子就可以了

新建一个DataTable 然后把数据导入
[解决办法]

C# code
void DataBind()        {            DataTable dt = InitTable();            List<string> lstSource = new List<string>();            lstSource.Clear();            DataTable dtSource = new DataTable();            if (dt != null && dt.Rows.Count > 0)            {                    int page = 20;      //假设超过20行则增加新列                int rem = dt.Rows.Count / page;                  int remCount = rem;                if (dt.Rows.Count % page > 0)                {                    remCount = remCount + 1;                }                int range = 0;                int index = 0;                foreach (DataRow row in dt.Rows)                {                                        if (range < page)                    {                        lstSource.Add(row["PERSON"].ToString() + "," + row["TELEPHONE"].ToString());                    }                    else                    {                        if (range % page != 0)                        {                            lstSource[index] = lstSource[index] + "," + row["PERSON"].ToString() + "," + row["TELEPHONE"].ToString();                            index++;                        }                        else                        {                            if (index == page)                                index = 0;                            lstSource[index] = lstSource[index] + "," + row["PERSON"].ToString() + "," + row["TELEPHONE"].ToString();                            index = 1;                        }                                            }                    range++;                }            }            if (lstSource.Count > 0)            {                string[] strColumns = lstSource[0].Split(new char[] { ',' });                for (int i = 0; i < strColumns.Length; i++)                {                    dtSource.Columns.Add("Column" + i.ToString());                }            }            foreach (string str in lstSource)            {                string[] values = str.Split(new char[] { ',' });                dtSource.Rows.Add(values);            }            dataGridView1.DataSource = dtSource;        }        private DataTable InitTable()        {            DataTable dt = new DataTable();            dt.Columns.Add("PERSON", typeof(string));            dt.Columns.Add("TELEPHONE", typeof(string));            for (int i = 0; i < 110; i++)            {                DataRow dr = dt.NewRow();                dr["PERSON"] = "联系人" + i.ToString();                dr["TELEPHONE"] = "联系电话" + i.ToString();                dt.Rows.Add(dr);            }            return dt;        } 

热点排行