原贴:http://topic.csdn.net/u/20090819/20/3b361421-0ada-4372-a983-13e5f81ca5fd.html
---------------------using System.Data;
using System.Web;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System;
using System.Reflection;namespace AutoCode.Core.Home
{
public class Index : TemplateBase
{
public override string ToString()
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("学号", typeof(string));
dt.Rows.Add(new object[] { "小张", "0001" });
dt.Rows.Add(new object[] { "小王", "0002" });
dt.Rows.Add(new object[] { "小李", "0003" });
//DataTable输出
GetHtml(dt); Dictionary<string, string> dct = new Dictionary<string, string>();
dct.Add("小张", "0001");
dct.Add("小王", "0002");
dct.Add("小李", "0003");
//Dictionary<>输出
GetHtml(dct); List<Studen> list = new List<Studen>();
list.Add(new Studen() { Name = "小张", Number = "0001" });
list.Add(new Studen() { Name = "小王", Number = "0002" });
list.Add(new Studen() { Name = "小李", Number = "0003" });
//List<>输出
GetHtml(list); ArrayList alist = new ArrayList();
alist.Add(new Studen() { Name = "小张", Number = "0001" });
alist.Add(new Studen() { Name = "小王", Number = "0002" });
alist.Add(new Studen() { Name = "小李", Number = "0003" });
//ArrayList输出
GetHtml(alist); return st.GetString();
} public string GetHtml(object itemList)
{
string html = "";
if (itemList is IEnumerable)
{
IEnumerable eb = itemList as IEnumerable;
if (eb != null)
{
System.Collections.IEnumerator er = eb.GetEnumerator();
while (er.MoveNext())
{
Type t = er.Current.GetType();
PropertyInfo[] properties = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
PropertyInfo pi = properties[0];
//foreach (PropertyInfo pi in properties)
//{ //}
html += pi.GetValue(er.Current, null).ToString();
}
}
}
else if (itemList is IListSource)
{
IList list = ((IListSource)itemList).GetList();
for (int i = 0; i <= list.Count - 1; i++)
{
System.Data.DataRowView drv = (System.Data.DataRowView)list[i];
html += drv[0].ToString();
}
}
else
{
html = "3";
}
//????? 这里要怎么写才能让不管传入 DataTable Dictionary<> List<> ArrayList 这些数据类型都能输出
//<ul><li>小张(0001)</li><li>小王(0002)</li><li>小李(0003)</li></ul>
return html; } } public class Studen
{
public string Name { get; set; }
public string Number { get; set; }
}
}
上面是我的处理,
那么是不是要这样子来做呢
还是有更好的方法
---------------------using System.Data;
using System.Web;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System;
using System.Reflection;namespace AutoCode.Core.Home
{
public class Index : TemplateBase
{
public override string ToString()
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("学号", typeof(string));
dt.Rows.Add(new object[] { "小张", "0001" });
dt.Rows.Add(new object[] { "小王", "0002" });
dt.Rows.Add(new object[] { "小李", "0003" });
//DataTable输出
GetHtml(dt); Dictionary<string, string> dct = new Dictionary<string, string>();
dct.Add("小张", "0001");
dct.Add("小王", "0002");
dct.Add("小李", "0003");
//Dictionary<>输出
GetHtml(dct); List<Studen> list = new List<Studen>();
list.Add(new Studen() { Name = "小张", Number = "0001" });
list.Add(new Studen() { Name = "小王", Number = "0002" });
list.Add(new Studen() { Name = "小李", Number = "0003" });
//List<>输出
GetHtml(list); ArrayList alist = new ArrayList();
alist.Add(new Studen() { Name = "小张", Number = "0001" });
alist.Add(new Studen() { Name = "小王", Number = "0002" });
alist.Add(new Studen() { Name = "小李", Number = "0003" });
//ArrayList输出
GetHtml(alist); return st.GetString();
} public string GetHtml(object itemList)
{
string html = "";
if (itemList is IEnumerable)
{
IEnumerable eb = itemList as IEnumerable;
if (eb != null)
{
System.Collections.IEnumerator er = eb.GetEnumerator();
while (er.MoveNext())
{
Type t = er.Current.GetType();
PropertyInfo[] properties = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
PropertyInfo pi = properties[0];
//foreach (PropertyInfo pi in properties)
//{ //}
html += pi.GetValue(er.Current, null).ToString();
}
}
}
else if (itemList is IListSource)
{
IList list = ((IListSource)itemList).GetList();
for (int i = 0; i <= list.Count - 1; i++)
{
System.Data.DataRowView drv = (System.Data.DataRowView)list[i];
html += drv[0].ToString();
}
}
else
{
html = "3";
}
//????? 这里要怎么写才能让不管传入 DataTable Dictionary<> List<> ArrayList 这些数据类型都能输出
//<ul><li>小张(0001)</li><li>小王(0002)</li><li>小李(0003)</li></ul>
return html; } } public class Studen
{
public string Name { get; set; }
public string Number { get; set; }
}
}
上面是我的处理,
那么是不是要这样子来做呢
还是有更好的方法
解决方案 »
- 使用MVC创建项目时,是怎么和网页美工合作的?
- List<T>的查找,修改,删除要如何实现?
- excel导出的问题
- .net中showPopWin()是系统函数吗,里面的参数都是什么意思
- 分页的问题
- 客户端脚本中onmouseover不是Button有效属性?
- 我在页面中使用了treeview,但却不知道如何设置treeview的背景为透明,请帮帮……成功就结帖
- 我在孟老大的网站上下载的源码怎么不能运行?
- 是否每个对象都需要判断是否为null
- iframe的页面重定向问题
- 做好的页面在IE中显示正常,但用遨游浏览器打开时页面显示就不正常?
- |zyciis| 求正则表达式,或其他方法, 删除一段字符串中开头和结尾的空格和换行符
control.Content = Object
形式,但是,它的文档中也说的很清楚了,Content能处理的几种类型,
建议你可以看一下
2.就是像你那样在方法中根据传入参数,判断类型
3.做一个范型接口..再分别针对 DataTable,Dictionary<>,List<>,ArrayList这几种做对应的实现
//实体类
public class Studen
{
string _Name = "";
string _Number = "";
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public string Number
{
get { return _Number; }
set { _Number = value; }
}
}//统一操作接口
public interface IStudentDo<T>
{
string GetHtml(T t);
}
//处理传入DataTable的情况
public class DataTableDo:IStudentDo<DataTable>
{ #region IStudentDo<DataTable> 成员 public string GetHtml(DataTable t)
{
return "DataTable处理";
} #endregion
}
//处理传入Dictionary的情况
public class DictionaryDo : IStudentDo<Dictionary<string, string>>
{ #region IStudentDo<Dictionary<string,string>> 成员 public string GetHtml(Dictionary<string, string> t)
{
return "Dictionary<>处理";
} #endregion
}
//处理传入List的情况
public class ListDo : IStudentDo<List<Studen>>
{ #region IStudentDo<List<Studen>> 成员 public string GetHtml(List<Studen> t)
{
return "List<>处理";
} #endregion
}
//处理传入 ArrayList的情况
public class ArrayListDo : IStudentDo<ArrayList>
{ #region IStudentDo<ArrayList> 成员 public string GetHtml(ArrayList t)
{
return "ArrayList处理";
} #endregion
} public class Test
{
public void TestMethod()
{
string strRev = "";
DataTable dt = new DataTable();
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("学号", typeof(string));
dt.Rows.Add(new object[] { "小张", "0001" });
dt.Rows.Add(new object[] { "小王", "0002" });
dt.Rows.Add(new object[] { "小李", "0003" });
//DataTable输出
strRev = new DataTableDo().GetHtml(dt); Dictionary<string, string> dct = new Dictionary<string, string>();
dct.Add("小张", "0001");
dct.Add("小王", "0002");
dct.Add("小李", "0003");
//Dictionary<>输出
strRev = new DictionaryDo().GetHtml(dct); List<Studen> list = new List<Studen>();
Studen s0 = new Studen();
s0.Name = "小张";
s0.Number = "0001";
list.Add(s0);
Studen s1 = new Studen();
s1.Name = "小王";
s1.Number = "0002";
list.Add(s1);
Studen s2 = new Studen();
s2.Name = "小李";
s2.Number = "0003";
list.Add(s2);
//List<>输出
strRev = new ListDo().GetHtml(list); ArrayList alist = new ArrayList();
Studen s00 = new Studen();
s00.Name= "小张";
s00.Number= "0001";
alist.Add(s00);
Studen s01 = new Studen();
s01.Name= "小王";
s01.Number= "0002";
alist.Add(s01);
Studen s02 = new Studen();
s02.Name= "小李";
s02.Number= "0003";
alist.Add(s02);
//ArrayList输出
strRev = new ArrayListDo().GetHtml(alist); }
}