新手求助:listview或datagridview实现自动多列方法
该软件的作用是简单的通讯录,只有联系人和联系电话,为了便于打印出a4
软件要求: 当第一,二列联系人达到一定的行数自动生成第三,四列,以此类推.
希望哪个兄弟给我思路,最好是案例,谢谢
看下图
[解决办法]
很简单,就是原来你用一行两列来显示100条数据,那么就是100行
你现在想用25行来显示这些数据,那么 就需要 100/25*2 列
把数据弄成这个样子就可以了
新建一个DataTable 然后把数据导入
[解决办法]
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; }