根據(jù)moduleName反射到某個類某個方法
[WebMethod(Description = "得到報表數(shù)據(jù)")]
[SoapHeader("Credentials")]
public DataSet GetRptData(string moduleName, DataSet dsCondition, string userNo)
{
DataSet ds = new DataSet();
Type type = Type.GetType("Regentsoft.Plugin.Report.Bll." + moduleName + ",Regentsoft.Plugin.Report.Bll");
if (type == null)
return ds;
object dObj = Activator.CreateInstance(type);
//屬性
System.Reflection.PropertyInfo property = type.GetProperty("UserNo");
property.SetValue(dObj, userNo, null);
System.Reflection.PropertyInfo property1 = type.GetProperty("DsCondition");
property1.SetValue(dObj, dsCondition, null);
//獲取方法的信息
System.Reflection.MethodInfo method = type.GetMethod("Calculate");
//調(diào)用方法的一些標(biāo)志位,這里的含義是Public并且是實例方法,這也是默認(rèn)的值
System.Reflection.BindingFlags flag = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance;
//調(diào)用方法,用一個object接收返回值
object obj = method.Invoke(dObj, flag, null, null, null);
if (obj != null)
{
ds = (DataSet)obj;
}
return ds;
}
轉(zhuǎn)換成DataView操作Datatable
/// <summary>
/// 取得選中的記錄
/// </summary>
/// <param name="dt"></param>
/// <param name="selectFieldName">選擇字段名</param>
/// <returns></returns>
public static DataTable GetDataTableSelectData(DataTable dt, string selectFieldName)
{
if (dt == null)
return null;
DataView dv = new DataView(dt);
dv.RowFilter = string.Format("{0} = 1", selectFieldName);
return dv.ToTable();
}