layui学习之路——数据表格上传

layui学习之路——数据表格上传(C#)

前端
toolbarDemo里面的是工具栏选项

<script type="text/html" id="toolbarDemo">
        <div class="layui-btn-container">
            <asp:button class="layui-btn  layui-btn-sm" lay-event="delete">删除</asp:button>
             <asp:button type="button" class="layui-btn layui-btn-sm" id="test1">
              <i class="layui-icon">&#xe67c;</i>上传
            </asp:button>       
        </div>
    </script>
    
 <table id="demo" lay-filter="test" ></table>

js

 $(document).ready(function() {   
            reloadTable();
        });
function reloadTable(){            //这里将数据表格封装成一个方法,方便之后添加功能
                layui.use(['upload', 'element', 'layer','table'],function(){
                    var table=layui.table;
                    var index = layer.load(1); //添加laoding,0-2两种方式
                    table.render({
                        elem:'#demo',            //对应html的table的id
                        height:600,                  //整张表的高度,设置高度后自动锁定表头
                        url:'global/DataService_Test.ashx' ,      //数据源,就是下面的文件
                        loading:false,    //加载条
                        method:'post',    //post方法本地第一次加载IE会报error,谷歌没问题
                        page:false,                    //分页
                        toolbar: '#toolbarDemo',   //指向自定义工具栏
                        defaultToolbar: [], 
                        request: {
                        pageName: 'page', //页码的参数名称,默认:page
                        limitName: 'limit' //每页数据量的参数名,默认:limit
                        },
                        id: 'table1',
                        parseData: function(res) {
                           return {
                               "code": res.code, //数据状态的字段名称,默认:code
                               "msg": res.msg, //成功的状态码,默认:0    
                               "count": res.count, //状态信息的字段名称,默认:msg
                               "data": res.data//数据总数的字段名称,默认:count
                           };
                       },
                       
                        cols:[[
                           {type:'radio'}   //单选列
                          ,{field: 'col1', title: 'col1', align:'center'}   
                          ,{field: 'col2', title: 'col2',align:'center'}
                          ,{field: 'col3', title: 'col3',width:100, align:'center'} 
                        ]],   
                        done: function(res, curr, count) { //返回数据执行回调函数
                             console.log(res);   //所有数据
                             console.log(curr);  //得到当前页码
                             console.log(count);//得到数据总量
                             layer.close(index); //返回数据关闭loading
                          }
                    });
                    
					upload.render({
                            elem: '#test1'
                            ,url: 'global/DataService_Test.ashx?action=upload' //此处配置你自己的上传接口即可
                            ,accept: 'file' //普通文件
                            ,exts:'xlsx'
                               ,done:function(res){
                                    if(res==2){
                                        layer.msg('上传成功!');
                                        layui.table.reload(table1);   //只刷新选中表格,
                                        window.parent.location.reload();   //页面刷新
                                        }
                                        else{
                                         layer.msg('上传失败!');
                                        }
                               }
                          });   

              });
        }      

ashx只贴上传代码了,这部分和之前用gridview上传的差不多,就是接收文件方式变了。

public void ProcessRequest(HttpContext context)
        {
         string action = context.Request["action"].ToString();
         if(action=="upload"){
	       		 SqlConnection DB = new SqlConnection(WebConfigurationManager.AppSettings["key1"].ToString());
	             HttpFileCollection files = context.Request.Files;
	             string filename = System.IO.Path.GetFileName(files[0].FileName);
            
                if (Directory.Exists(HttpContext.Current.Server.MapPath("/Content/excel")) == false)//如果不存在就创建file文件夹
                {
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath("/Content/excel"));
                }
                string url = "/Content/excel/" + filename;
                string path = HttpContext.Current.Server.MapPath(url);
                files[0].SaveAs(path);
                //读取文件保存到数据库
                string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
                OleDbConnection thisconnection = new OleDbConnection(conn);
                thisconnection.Open();
                string Sql = "select * from [Sheet1$]";
                OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, thisconnection);
                DataSet ds3 = new DataSet();
                mycommand.Fill(ds3, "[Sheet1$]");
                thisconnection.Close();

                 //插入到数据库中
                    DB.Open();
                    int count = ds3.Tables["[Sheet1$]"].Rows.Count;     //获取行数,一行行插入
                    for (int i = 0; i < count; i++)
                    {
                        string col1,col2,col3;

                        col1= ds3.Tables["[Sheet1$]"].Rows[i]["col1"].ToString().Trim();
                        col2= ds3.Tables["[Sheet1$]"].Rows[i]["col2"].ToString().Trim();
                        col3= ds3.Tables["[Sheet1$]"].Rows[i]["col3"].ToString().Trim();
                        string excelsql = "insert into table(col1,col2,col3)values('"+col1+"','"+col2+"','"+col3+"')";


     }
                    context.Response.Write("2");
   }
}

如果要判断excel内容,需要在插入数据库那块用try catch,传递到js,js根据获取的值进行相应提示。暂时懒得写。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值