C#动态创建Gridview及批量插入到数据库
这里介绍两种动态创建Gridview的方法:
(一)、有时需要应付上头领导的检查,所以就弄一些静态的Gridview来显示数据,这种方法的优点就是不用连接数据库,比较方便,但是代码灵活性不高,所有数据由程序员在后台代码写死。
1、首先要在前台添加一个gridview即可
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="动态添加.test1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
2、在后台首先动态创建一个DataTable表,然后动态创建并添加DataColumn列,随后动态创建行并把数据依次添加进去,此处提供了两种方法:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
//添加列
dt.Columns.Add(new DataColumn("葡萄来源", typeof(string)));
dt.Columns.Add(new DataColumn("品种", typeof(string)));
dt.Columns.Add(new DataColumn("市场名", typeof(string)));
dt.Columns.Add(new DataColumn("销售价格", typeof(string)));
dt.Columns.Add(new DataColumn("销售量", typeof(string)));
dt.Columns.Add(new DataColumn("销售人员", typeof(string)));
//添加行
/*for (int i = 0; i < 9; i++)
{
DataRow row = dt.NewRow();
row["葡萄来源"] = "湖南";
row["品种"] = "内毕罗";
row["市场名"] = "湖南";
row["销售价格"] = "20";
row["销售量"] = "100";
row["销售人员"] = "张三";
dt.Rows.Add(row);
}*/
dt.Rows.Add(new object[] { "湖南", "内毕罗", "湖南", "", "", "张三" });
GridView1.DataSource = dt;
GridView1.DataBind();
}
(二)、有时我们在写做项目时,可能客户会要求一种商品,但是有多种属性,这时如果我们一个个的添加,就太浪费我们的生命了,因为我们可以采取动态添加的方式,极大的节约了我们的时间,代码如下:
1、前端:
<body>
<form id="form1" runat="server">
<div style="width: 800px; margin: 0 auto;">
<asp:Panel ID="Panel1" runat="server" GroupingText="订单信息录入" Font-Size="16px">
<br />
<table style="width: 600px; margin: 0 auto;">
<tr>
<td>市场网点:</td>
<td><asp:TextBox ID="txtMarketPlace" runat="server"></asp:TextBox></td>
<td>销售经理:</td>
<td><asp:TextBox ID="txtSalesMan" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td>要货时间:</td>
<td><asp:TextBox ID="txtOrderTime" runat="server"></asp:TextBox></td>
<td></td>
<td></td>
</tr>
</table>
</asp:Panel>
<hr />
<asp:Panel ID="Panel2" runat="server" GroupingText="订单详细信息添加" Font-Size="16px">
<br />
<table style="width: 550px; margin: 0 auto;">
<tr>
<td>品种:</td>
<td><asp:DropDownList ID="ddlvariety" runat="server" Width="153px">
<asp:ListItem>红地球</asp:ListItem>
</asp:DropDownList></td>
<td>包装名称:</td>
<td><asp:DropDownList ID="ddlpackage" runat="server" Width="153px">
<asp:ListItem>彩包</asp:ListItem>
<asp:ListItem>周转筐</asp:ListItem>
<asp:ListItem>一次性筐</asp:ListItem>
<asp:ListItem>手提箱</asp:ListItem>
<asp:ListItem>天地盖箱</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td>数量(Kg):</td>
<td><asp:TextBox ID="txtAmount" runat="server"></asp:TextBox></td>
<td>规格(Kg/件):</td>
<td><asp:TextBox ID="txtstandard" runat="server"></asp:TextBox></td>
</tr>
</table>
<br />
<center>
<asp:Button ID="btnSubmit" runat="server" Text="添 加"
onclick="btnSubmit_Click" />
</center>
</asp:Panel>
</div>
<hr />
<div style="width: 800px; margin: 0 auto;">
<asp:Panel ID="Panel3" runat="server" GroupingText="已添加的订单详细信息" Visible="false">
<br />
<asp:GridView ID="GridView1" runat="server" AllowPaging="false" AutoGenerateColumns="False"
CellPadding="" EmptyDataText="暂无记录" EnableModelValidation="True" ForeColor="#333333"
GridLines="None" RowStyle-HorizontalAlign="Center"
Width="100%" onrowdeleting="GridView1_RowDeleting">
<Columns>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%#(Container.DataItemIndex+).ToString() %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ProductName" HeaderText="品种" />
<asp:BoundField DataField="PackageName" HeaderText="包装" />
<asp:BoundField DataField="Amount" HeaderText="数量(kg)" />
<asp:BoundField DataField="Standard" HeaderText="规格(kg/件)" />
<asp:BoundField DataField="UnitCount" HeaderText="件数" />
<asp:CommandField ShowDeleteButton="True" HeaderText="删除" />
</Columns>
<EditRowStyle BackColor="#999999" VerticalAlign="NotSet" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#A18B77" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="true" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="true" Font-Size="18px" ForeColor="White"
Height="25px" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
<br />
<center>
<asp:Button ID="btnAllAdd" runat="server" Text="批量提交"
onclick="btnAllAdd_Click" />
</center>
</asp:Panel>
</div>
</form>
</body>
2、后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; namespace 动态添加
{
public partial class test : System.Web.UI.Page
{
//动态创建一个表
private static DataTable dt = new DataTable();
//动态创建列,此处创建了五列,其中序号列在前台设置为自动增长的
private static DataColumn ProductName = new DataColumn("ProductName", typeof(string));
private static DataColumn Amount = new DataColumn("Amount", typeof(float));
private static DataColumn Standard = new DataColumn("Standard", typeof(float));
private static DataColumn UnitCount = new DataColumn("UnitCount", typeof(float));
private static DataColumn PackageName = new DataColumn("PackageName", typeof(string));
protected void Page_Load(object sender, EventArgs e)
{
dt.Columns.Clear();//把列清除
dt.Rows.Clear();//把行清除
//把创建好的列自动添加到已创建好的表中
dt.Columns.Add(ProductName);
dt.Columns.Add(Amount);
dt.Columns.Add(Standard);
dt.Columns.Add(UnitCount);
dt.Columns.Add(PackageName);
} protected void btnSubmit_Click(object sender, EventArgs e)
{
//动态添加行
DataRow row = dt.NewRow();
//赋值
row["ProductName"] = ddlvariety.SelectedValue;
row["PackageName"] = ddlpackage.SelectedValue;
row["Amount"] = Convert.ToDouble(txtAmount.Text.Trim());
row["Standard"] = Convert.ToDouble(txtstandard.Text.Trim());
row["UnitCount"] = Convert.ToDouble(row["Amount"]) / Convert.ToDouble(row["Standard"]);
dt.Rows.Add(row);
GridView1.DataSource = dt.DefaultView;//绑定数据源
GridView1.DataBind();
Panel3.Visible = true;
} protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (dt.Rows.Count > )
{
DataRow temprow = dt.Rows[e.RowIndex];//获得当前行的索引
dt.Rows.Remove(temprow);
}
if (dt.Rows.Count <= )
{
Panel3.Visible = false;
}
GridView1.DataSource = dt.DefaultView;
GridView1.DataBind();
} protected void btnAllAdd_Click(object sender, EventArgs e)
{
//TODO:批量插入数据库,此处代码省略
}
}
}
效果如下:


由于界面太大,所以分为了两张图,此处订单信息录入与订单详细信息添加两部分都可以是一对多、多对多的关系,只要最后点击批量提价就可以一次性的插入到数据库当中了
C#动态创建Gridview及批量插入到数据库的更多相关文章
- C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)
/*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ...
- ASP.Net动态创建GridView
1.创建Field BoundField requestitem = new BoundField();//注意Field可以是ButtonField,TemplateField,...等等GridV ...
- MyBatis_动态sql_foreach_mysql下foreach批量插入的两种方式
方法1: 笔记要点出错分析与总结工程组织数据库组织0.重新修改Bean类 修改1.定义接口 //批量插入 public void addEmps(@Param("emps") ...
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1 背景 系统中需要批量生成单据数据到数据库表,所以采用 ...
- python批量插入mysql数据库(性能相关)以及反引号的使用
参考link: https://blog.csdn.net/qq_35958094/article/details/78462800(插入相关) https://www.cnblogs.com/hya ...
- C# OracleBulkCopy 批量插入oracle数据库的方法
只有安装了oracle 11G客户端的机器上才可以用,要用到ODP.NET组件中的oracleDataAccess.DLL,命名空间引用为Oracle.DataAccess.Client; 引用:Or ...
- C#批量插入Sybase数据库,Anywhere 8
数据库版本是Adaptive Server Anywhere 8 1.添加引用,程序集 iAnywhere.Data.AsaClient.这个和SQLServer的System.Data.SqlCli ...
- Django—ajax、前端后端编码格式,bulk_create批量插入语数据库、自定义分页
一.ajax简介: XML也是一门标记语言该语法应用场景 1.写配置文件 2.可以写前端页面(odoo框架中 erp) 每家公司都会有属于这家公司独有的内部管理软件:专门用来开发企业内部管理软件 框架 ...
- Java使用SQLServerBulKCopy实现批量插入SQLSqerver数据库
这是CodingSir的帖子说的(由于不够详细,我现在提供给详细的,上手即用): Microsoft SQL Server 的bcp命令可以快速将大型文件复制插入到数据库中,C#提供了SqlBulkC ...
随机推荐
- Android-------------fragment的学习
一.fragment的静态使用 1.使用步骤: a.继承fragment 重写onCreatevVew()的回调方法 b.设置Fragment的布局 c.在Activity中声明Fragme ...
- Exp2 后门原理与实践 20164321 王君陶
Exp2 后门原理与实践 20164321 王君陶 一.实验内容 基础问题回答: 1.例举你能想到的一个后门进入到你系统中的可能方式? 答:通过漏洞,点击陌生链接,或者浏览不良网页挂马. 2.例举你知 ...
- 790. Domino and Tromino Tiling
We have two types of tiles: a 2x1 domino shape, and an "L" tromino shape. These shapes may ...
- POJ 3468A Simple Problem with Integers(线段树区间更新)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 112228 ...
- 2018新年 flag 了解一下(每月初更新...)
昨天(2018/3/2)是元宵节,这很恐怖,因为意味着 往后再也找不到这么冠冕堂皇的理由用来偷懒啦~ 嘤嘤嘤~ (我特么反手就是一拳,让你嘤嘤嘤) emm,跑题了. 正文 话说一日之计在于晨,一年之计 ...
- 在Ubuntu中增加root用户登录
一:增加root用户登录 1.打开终端,输入:sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 2.在弹出的编辑框里输入:gree ...
- ionic的基础学习(第一篇)
1.ioinc的头部与底部 1.Header 固定在屏幕的顶端的组件,可包含标题,左右的功能按钮.(提供很多颜色的样式,及调用不同的样式名,亦可自定义) bar-light,bar-stable,ba ...
- klee 测试一个简单的正则表达式匹配函数
函数源代码位于 klee源码 的examples/regexp文件夹下面:c程雪源码文件名为 Regexp.c First Step: 使用clang编译器将c源代码转化为llvm位码形式.如果你的 ...
- 【LeetCode】414. 第三大的数
给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2 ...
- Flume搭建及学习(基础篇)
转载请注明原文出处:http://www.cnblogs.com/lighten/p/6830439.html 1.简介 该文主要是翻译官方的相关文档,源地址点击这里.介绍一下Flume的一些基本知识 ...