随笔 - 12  文章 - 0  评论 - 13 
  2011年10月14日

其实用from..Linq语句做外连接简单而且便于理解,我个人使用lamdba纯粹是技术上的追求吧

  
DataTable exceldt=new DataTable();
DataTable nomacdt=new DataTable();
exceldt = exceldt.AsEnumerable().GroupJoin(nomacdt.AsEnumerable(), a => a.Field<String>("COP_G_NO"), b => b.Field<String>("newmachineType"), (a, b) => new
{

G_NO = a.Field<Int32>("G_NO"),
COP_G_NO = a.Field<String>("COP_G_NO"),
G_QTY = a.Field<String>("G_QTY"),
QTY_1 = a.Field<String>("QTY_1"),
NET_WT = String.IsNullOrWhiteSpace(a.Field<String>("NET_WT")) ? (nomacdt.Rows.Count > 0 ? b.Select(c => c.Field<Decimal>("NW")).Single().ToString() : a.Field<String>("NET_WT")) : a.Field<String>("NET_WT"),
GROSS_WT = String.IsNullOrWhiteSpace(a.Field<String>("GROSS_WT")) ? (nomacdt.Rows.Count > 0 ? b.Select(c => c.Field<Decimal>("GW")).Single().ToString() : a.Field<String>("GROSS_WT")) : a.Field<String>("GROSS_WT"),

}).ToDataTable();

posted @ 2011-10-14 15:37 不惑ed 阅读(145) 评论(0) 编辑
  2011年9月15日

 

c#

//十进制转二进制
Console.WriteLine(Convert.ToString(69, 2));
//十进制转八进制
Console.WriteLine(Convert.ToString(69, 8));
//十进制转十六进制
Console.WriteLine(Convert.ToString(69, 16));

//二进制转十进制
Console.WriteLine(Convert.ToInt32(”100111101″, 2));
//八进制转十进制
Console.WriteLine(Convert.ToInt32(”76″, 8));
//十六进制转十进制
Console.WriteLine(Convert.ToInt32(”FF”, 16));

sql

--16进制数"0X00037FFE9994EE5E"转化为10进制:   
select CONVERT(bigint,cast(0X00037FFE9994EE5E as varbinary)) as converted
--或:
select CONVERT(VARCHAR(50), CONVERT(bigint,0X00037FFE9994EE5E)) as converted

--在一个数据表中用nvarchar来存储该16进制数,用十进制取出
SELECT CONVERT(bigint, CONVERT(varbinary, CAST(N'0x' + N'00037FFE9994EE5E' AS char), 1))
posted @ 2011-09-15 08:54 不惑ed 阅读(113) 评论(0) 编辑

在 web.config 中 <system.web> 一节下面添加类似如下内容:

<httpHandlers>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>

posted @ 2011-09-15 08:53 不惑ed 阅读(18) 评论(0) 编辑
  2011年7月5日

假如我们要用JS显示一个TABLE,我们需要用ajax从后台获取一个数据集合 如DataTable或List等,然后再在JS里循环遍历,由于要控制样式等等,所以感觉有点麻烦。所以我就想在后台把HTML生成了,在客户端直接获取HTML,上代码:

在ascx中的代码

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</form>

在cs中的代码

//这里仅仅是手动组装了数据源
DataTable dt = new DataTable();
dt.Columns.AddRange(
new DataColumn[] { new DataColumn("Column1"), new DataColumn("Column2") });
DataRow dr
= dt.NewRow();
dr[
"Column1"] = "1";
dr[
"Column2"] = 2;
dt.Rows.Add(dr);
//这里才是关键代码
WebUserControl1 wuc = this.LoadControl("/WebUserControl1.ascx") as WebUserControl1;
wuc.GridView1.DataSource
= dt;
wuc.GridView1.DataBind();
Page p
= new Page();
p.Controls.Add(wuc);
StringWriter tw
= new StringWriter();
HttpContext.Current.Server.Execute(p, tw,
false);
//html就是tw.ToString()啦
Response.Write(tw.ToString());
posted @ 2011-07-05 14:50 不惑ed 阅读(205) 评论(0) 编辑
  2011年4月25日

整报表的时候页面上的table是循环出来的没有数据源  所以需要导出Execl的时候就悲剧了,

然后想到用js到Execl,ActiveX未标记为安全,结果还要去设置浏览器,添加信任站点

最后又实在不想重整一边数据源,就用js把页面里Table里的数据转换成C#对应的DataTable的JSON格式,然后通过请求再发回到服务器,再反序列化成DataTable,然后就有数据源了

function TableToJson(tableid) {
    var txt = "[";
    var table = document.getElementById(tableid);
    var row = table.getElementsByTagName("tr");
    var col = row[0].getElementsByTagName("th");
    for (var j = 1; j < row.length; j++) {
        var r = "{";
        for (var i = 0; i < col.length; i++) {
            var tds = row[j].getElementsByTagName("td");
            r += "\"" + col[i].innerHTML + "\"\:\"" + tds[i].innerHTML + "\",";
        }
        r = r.substring(0, r.length - 1)
        r += "},";
        txt += r;
    }
    txt = txt.substring(0, txt.length - 1);
    txt += "]";
    return txt; 
}

posted @ 2011-04-25 15:53 不惑ed 阅读(504) 评论(4) 编辑

收藏的工具代码

function formToHash(form){
	    var hash = {}, el;
	    for(var i = 0,len = form.elements.length;i < len;i++){
	        el = form.elements[i];
	        if(el.name == "" || el.disabled) continue;
	        switch(el.tagName.toLowerCase()){
	        case "fieldset":
	            break;
	        case "input":
	            switch(el.type.toLowerCase()){
	            case "radio":
	                if(el.checked)
	                    hash[el.name] = el.value;
	                break;
	            case "checkbox":
	                if(el.checked){
	                    if(!hash[el.name]){
	                        hash[el.name] = [el.value];
	                    }else{
	                        hash[el.name].push(el.value);
	                    }
	                }
	                break;
	            case "button":
	                break;
	            case "image":
	                break;
	            default:
	                hash[el.name] = el.value;
	                break;
	            }
	            break;
	        case "select":
	            if(el.multiple){
	                for(var j = 0, lens = el.options.length;j < lens; j++){
	                    if(el.options[j].selected){
	                        if(!hash[el.name]){
	                            hash[el.name] = [el.options[j].value];
	                        }else{
	                            hash[el.name].push(el.options[j].value);
	                        }
	                    }
	                }
	            }else{
	                hash[el.name] = el.value;
	            }
	            break;
	        default:
	            hash[el.name] = el.value;
	            break;
	        }
	    }
	    form = el = null;
	    return hash;
	}

posted @ 2011-04-25 10:01 不惑ed 阅读(79) 评论(0) 编辑
  2011年4月22日

当我们在vs里运行代码的时候,vs会自动运行asp.net Development Server ,这个程序的作用跟IIS一样

今天就尝试手动启动一下

在C盘找到WebDev.WebServer.exe

这个程序应该在一般在 C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\下,没有就去 C:\Windows\Microsoft.NET\Framework\v2.0.50727\看看

如果还没有那你就在C盘搜索一下吧

我写的bat文件是这样的

cd C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\
start WebDev.WebServer /port:9898 /path:D:\EssenceSystem\Essence\Essence.Web\

解释一下:

第一行是定位到WebDev.WebServer所在的目录

第二行才是关键 执行这个程序  有两个参数  port:指定端口  path:指定网站路径

即使你不知道也没事 因为只要执行这个程序 参数格式不正确就会有提示,如图:

看着这张图就知道该怎么写了

感言:

今天闲来没事给整了这么个小东西,和大家分享一下,当然知道这个命令怎么写并不只是为了可以手动启动asp.net Development Server ,我们还可以在程序中用代码启动这个程序,可以把网站打包成exe,不用去架什么IIS,随便在哪台机器, 只要装了相应的framework版本 ,那就能运行网站 ,在给客户做展示的时候会很方便,很牛B

任何一点小东西扩展开来,都有很大的开发潜力

posted @ 2011-04-22 12:07 不惑ed 阅读(212) 评论(0) 编辑
  2011年4月14日
摘要: 网上找了好一会啊,要么是不全要么是不能用,东拼西凑 我的工具类终于诞生了,代码就是这么炼成的using System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication1{ public class ChineseToPinYin { private static int[] pyValue = new int[] { -20319,-20317,-20304,-20295,-20292,-20283,-20265阅读全文
posted @ 2011-04-14 15:49 不惑ed 阅读(466) 评论(4) 编辑
  2011年1月27日
摘要: modelJS类js类与model类里的属性相对应 js中可以多出属性但不可以少属性 多出属性不影响序列化js 对象 new由于我要多个对象 这里我用了个数组来存储这些对象js对象转json这段代码是从网上找的 然后稍作改进 可以序列化数组 和 单个对象后台c# json 转对象c#方法调用其中遇到的问题日期格式一直是json的一块痛啊date 转json 这篇文章主要介绍的json 反序列化 其他的就比较简单了 网上搜搜一大堆 不累述了阅读全文
posted @ 2011-01-27 11:09 不惑ed 阅读(468) 评论(0) 编辑
  2011年1月18日
posted @ 2011-01-18 13:53 不惑ed 阅读(405) 评论(0) 编辑