JQuery插件第三十九个:整条数据添加插件

using System;
using System.Web;
using System.Data;
using System.Text;
using System.Collections;
using Common;

public class Do : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        //Post方式提交的数据表名
        string tb = Fun.Form("tb");
        //Post方式提交的Json数据
        string rs = Fun.Form("rs");

        if (rs == "[]") { context.Response.Write("[{\"do\":\"ok\"}]"); return; }
        DataTable table = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(rs);

        int rtn = 0;
        StringBuilder sb = new StringBuilder();
        foreach (DataRow dr in table.Rows)
        {
            Hashtable ht = new Hashtable();
            StringList sl = new StringList();
            foreach (DataColumn dc in table.Columns)
            {
                sl.Add(dc.ColumnName);
            }
            DataTable dt = DBClass.GetDataTable(string.Format("Select {0} from {1} Where 1=2 ", sl.GetString(), tb));
            foreach (DataColumn dc in table.Columns)
            {
                if (dt.Columns[dc.ColumnName].DataType == typeof(DateTime) && !Fun.IsDateTime(dr[dc.ColumnName].ToString()))
                    ht[dc.ColumnName] = "1900-01-01";
                else
                    ht[dc.ColumnName] = dr[dc.ColumnName].ToString();
            }
            string sql = "", sqla = "", sqlb = "@";
            string[] arrFields = new string[ht.Count];
            ht.Keys.CopyTo(arrFields, 0);
            sqla = String.Join(",", arrFields).Replace("\"", "");
            sqlb += String.Join(",@", arrFields);
            sql = "insert into[" + tb + "](" + sqla + ") values(" + sqlb + ");";
            foreach (string field in ht.Keys)
            {
                sql = sql.Replace("@" + field, "'" + ht[field].ToString() + "'");
            }
            sb.Append(sql);
        }
        rtn = DBClass.ExeNonQuery(sb.ToString().Replace("''", "null"));
        if (rtn > 0)
        {
            context.Response.Write("[{\"do\":\"ok\"}]");
        }
        else
        {
            context.Response.Write("[{\"do\":\"fail\"}]");
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}
 
 
 


/*
* jQuery ajaxPostJson plugin 0.3
*
* Copyright (c) 2014 chinet_bridge
*
* 表单提交插件 0.3版
*
*/
; (function($) {
    $.fn.ajaxPostJson = function(options) {
        var defaults = {
            title: null,          //返回操作标题,调用插件时,不用metadata时为必填参数
            selector: null,       //每条数据记录所在选择器,选填参数
            params: {},           //扩展参数,输入任意键值提供给服务端,选填参数
            submiturl: null,      //Ajax后台文件,比如Do.ashx ,调用插件时,必填参数
            //记录行内字段选择器,选填参数
            feildselector: "input[type=text],input[type=password],input[type=hidden],input:checked,textarea,select",
            //提交到后台的json数据包所在参数的名称
            jsonpacketname: "rs"
        }
        var opts = $.extend(defaults, options);
        var o = {}
        var restr = [];
        //jqo 数据所在jq对象
        function ajaxAdd(jqo) {
            var json = "[";
            var $rs;
            if (o.selector == null || o.selector == "") {
                $rs = jqo;
            } else {
                $rs = jqo.find(o.selector);
            }
            $rs.each(function() {
                var inputsel = $(this).find(o.feildselector);
                if (inputsel.length > 0) {
                    json += "{";
                    inputsel.each(function() {
                        if (typeof $(this).attr("name") == "undefined") { return true; }
                        var key = $(this).attr("name");

                        key = (key.indexOf('$') != -1) ? key.split('$')[1] : key; key = key.replace(/\"/gm, "");
                        var value = $(this).val();

                        if (key != null && key != "" && key != "null") {
                            json += "'" + key + "':'" + value + "',";
                        }
                    });
                    json += "},";
                }
            });
            json += "]"; o.params[o.jsonpacketname] = json;    //json数据包
            $.ajax({
                async: false,
                url: o.submiturl,
                type: "post",
                data: o.params,
                dataType: "json",
                success: function(msg) {
                    var json = eval(msg);
                    restr[restr.length] = json[0];
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    //alert(XMLHttpRequest.status);
                    //alert(XMLHttpRequest.readyState);
                    //alert(textStatus);
                    alert('submiturl:' + o.submiturl + ' title:' + opts.title + "数据错误" + textStatus);
                },
                complete: function(XMLHttpRequest, textStatus) {
                    this; //调用本次AJAX请求时传递的o参数
                }
            });
        }
        this.each(function() {
            var $form = $(this);
            if ($.metadata) {
                o = opts.title == null
                ? $.extend({}, opts, $(this).metadata())
                : $.extend({}, $(this).metadata(), opts);
            } else {
                o = opts;
            }
            ajaxAdd($form);
            restr[restr.length - 1]["title"] = o.title;
        });
        return restr;
    };
})(jQuery);




        $(function() {
            $("#AddBtn").click(function() {
                //ID 数据表,对应某个Table,div,UL等的
                //itemTag 数据每条记录对应的tr或li 等HTML标签,不填则函数认为整个ID为tableName的整个标签是一条数据记录
                //数据字段名写在input输入框,隐藏域,单选框复选框文本域上面。
                //其中多记录添加时radio的name要加数字前缀“1$”,"2$","3$"来区分不同记录。数字本身不代表记录序号,仅用于页面操作。
                alert($("#AXBacterialTest").ajaxPostJson({ selector: 'tr'})[0].doit);  //ID对应数据表 AXBacterialTest
                alert($("#AXDiagnos").ajaxPostJson()[0].doit); //ID对应数据表AXDiagnos
            });
        });

    <table width="100%" border="0" id="AXBacterialTest">
        <tr>
            <td width="22%">
                培养日期
            </td>
            <td width="26%">
                病原菌
            </td>
            <td width="25%">
                抗菌药物
            </td>
            <td width="27%">
                药物敏感性
            </td>
        </tr>
        <tr>
            <td>
                <input type="text" value="" name="BTDate" /><span></span>
            </td>
            <td>
                <input type="text" value="" name="BTNosophyte" /><span></span>
            </td>
            <td>
                <input type="text" value="" name="BTB" /><span></span>
            </td>
            <td>
                <input value="S" type="radio" name="1$BTA" />S
                <input value="I" type="radio" name="1$BTA" />I
                <input value="R" type="radio" name="1$BTA" />R
            </td>
        </tr>
        <tr>
            <td>
                <input type="text" value="" name="BTDate" /><span></span>
            </td>
            <td>
                <input type="text" value="" name="BTNosophyte" /><span></span>
            </td>
            <td>
                <input type="text" value="" name="BTB" /><span></span>
            </td>
            <td>
                <input value="S" type="radio" name="2$BTA" />S
                <input value="I" type="radio" name="2$BTA" />I
                <input value="R" type="radio" name="2$BTA" />R
            </td>
        </tr>
        <tr>
            <td>
                <input type="text" value="" name="BTDate" /><span></span>
            </td>
            <td>
                <input type="text" value="" name="BTNosophyte" /><span></span>
            </td>
            <td>
                <input type="text" value="" name="BTB" /><span></span>
            </td>
            <td>
                <input value="S" type="radio" name="3$BTA" />S
                <input value="I" type="radio" name="3$BTA" />I
                <input value="R" type="radio" name="3$BTA" />R
            </td>
        </tr>
    </table>
    <table width="100%" border="0" id="AXDiagnos">
        <tr>
            <td width="17%" style="text-align: right;">
                感染类型和特征:
            </td>
            <td>
                <input type="text" name="DType" value="" /><span></span>
            </td>
        </tr>
        <tr>
            <td width="17%" style="text-align: right;">
                严重程度:
            </td>
            <td>
                <input type="radio" name="DLevel" value="1" checked="checked" />
                轻度
                <input type="radio" name="DLevel" value="2" />
                中度
                <input type="radio" name="DLevel" value="3" />
                重度
            </td>
        </tr>
        <tr>
            <td width="17%" style="text-align: right;">
                依    据:
            </td>
            <td width="83%">
                <textarea name="DBasis" style="width: 500px; height: 130px; border: 1px solid #C2C2C2;"></textarea>
                <span></span>
            </td>
        </tr>
    </table>
    </table>
    <input type="button" value="提交" id="AddBtn" class="insert" />

你可能感兴趣的:(JQuery插件第三十九个:整条数据添加插件)