コード例 #1
0
    //根据 DataSet 产生提供给报表需要的JSON文本数据
    public static string GenDetailText(DataSet ds)
    {
        System.ServiceModel.Dispatcher.JsonQueryStringConverter jqsc = new System.ServiceModel.Dispatcher.JsonQueryStringConverter();
        StringBuilder sbJSONText = new StringBuilder("{\n");

        foreach (DataTable dt in ds.Tables)
        {
            //"recordset":[
            sbJSONText.Append('"');
            sbJSONText.Append(dt.TableName);
            sbJSONText.Append("\":[\n");
            foreach (DataRow dr in dt.Rows)
            {
                sbJSONText.Append('{');
                for (int i = 0; i < dt.Columns.Count; ++i)
                {
                    if (!dr.IsNull(i))
                    {
                        //string Value;
                        //if (dt.Columns[i].DataType.IsArray)
                        //{
                        //    Value = Convert.ToBase64String((byte[])dr[i]);
                        //}
                        //else
                        //{
                        //    Value = dr[i].ToString();
                        //    PrepareValueText(ref Value);
                        //}
                        //sbJSONText.AppendFormat("\"{0}\":\"{1}\",", dt.Columns[i].ColumnName, Value);

                        //用 ConvertValueToString 转换,这样数字类型才不会加引号
                        //如果日期类型也用ConvertValueToString转换,则为 "\/Date(-152438400000+0800)\/" 这样的形式
                        string Value;
                        if (dt.Columns[i].DataType.IsArray)
                        {
                            Value = "\"" + Convert.ToBase64String((byte[])dr[i]) + "\"";
                        }
                        else if (dt.Columns[i].DataType == typeof(System.DateTime))
                        {
                            Value = "\"" + dr[i].ToString() + "\"";
                        }
                        else
                        {
                            Value = jqsc.ConvertValueToString(dr[i], dt.Columns[i].DataType);
                        }
                        sbJSONText.AppendFormat("\"{0}\":{1},", dt.Columns[i].ColumnName, Value);
                    }
                }
                sbJSONText.Remove(sbJSONText.Length - 1, 1); //去掉每笔记录最后一个字段后面的","
                sbJSONText.Append("},\n");
            }
            sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一条记录后面的","
            sbJSONText.Append("],\n");
        }
        sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一记录集后面的","
        sbJSONText.Append("}");

        return(sbJSONText.ToString());
    }
コード例 #2
0
		public void Setup ()
		{
			c = new JsonQueryStringConverter ();
		}