这里介绍两种动态创建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及批量插入到数据库的更多相关文章

  1. C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)

      /*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ...

  2. ASP.Net动态创建GridView

    1.创建Field BoundField requestitem = new BoundField();//注意Field可以是ButtonField,TemplateField,...等等GridV ...

  3. MyBatis_动态sql_foreach_mysql下foreach批量插入的两种方式

    方法1: 笔记要点出错分析与总结工程组织数据库组织0.重新修改Bean类    修改1.定义接口 //批量插入 public void addEmps(@Param("emps") ...

  4. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1      背景 系统中需要批量生成单据数据到数据库表,所以采用 ...

  5. python批量插入mysql数据库(性能相关)以及反引号的使用

    参考link: https://blog.csdn.net/qq_35958094/article/details/78462800(插入相关) https://www.cnblogs.com/hya ...

  6. C# OracleBulkCopy 批量插入oracle数据库的方法

    只有安装了oracle 11G客户端的机器上才可以用,要用到ODP.NET组件中的oracleDataAccess.DLL,命名空间引用为Oracle.DataAccess.Client; 引用:Or ...

  7. C#批量插入Sybase数据库,Anywhere 8

    数据库版本是Adaptive Server Anywhere 8 1.添加引用,程序集 iAnywhere.Data.AsaClient.这个和SQLServer的System.Data.SqlCli ...

  8. Django—ajax、前端后端编码格式,bulk_create批量插入语数据库、自定义分页

    一.ajax简介: XML也是一门标记语言该语法应用场景 1.写配置文件 2.可以写前端页面(odoo框架中 erp) 每家公司都会有属于这家公司独有的内部管理软件:专门用来开发企业内部管理软件 框架 ...

  9. Java使用SQLServerBulKCopy实现批量插入SQLSqerver数据库

    这是CodingSir的帖子说的(由于不够详细,我现在提供给详细的,上手即用): Microsoft SQL Server 的bcp命令可以快速将大型文件复制插入到数据库中,C#提供了SqlBulkC ...

随机推荐

  1. C# DataTable导出EXCEL后身份证、银行卡号等长数字信息显示乱码解决

    在DataTable导出EXCEL后发现有些格式显示有问题,比如身份证.银行卡号等大于11位的数字显示为科学计数法.13681-1等 带中划线的两段数字显示为日期格式等. 处理方法如下: public ...

  2. 附1 Java内存模型与共享变量可见性

    注:本文主要参考自<深入理解Java虚拟机(第二版)>和<深入理解Java内存模型> 1.Java内存模型(JMM) Java内存模型的主要目标:定义在虚拟机中将变量存储到内存 ...

  3. Java反编译工具Luyten介绍

    比较精准的一个java反编译工具,笔者有时候用jd-gui反编译不出来的class用luyten都可以反编译出来. 官方网站:https://github.com/deathmarine/Luyten ...

  4. java 中什么是aop

    AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...

  5. Kafka Java 客户端开发

    依赖包导入 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.1 ...

  6. NSCache 的好处

    相较于 NSDictionary 线程安全 系统资源将要耗尽时,自动删减缓存 自动删减"最久未使用的"对象 不会自动拷贝键.因为有些键不支持拷贝操作 可以和 NSPurgeable ...

  7. cobbler 自定义安装系统

    1.自定义安装系统(根据mac地址)--name=定义名称--mac=客户端的mac地址--ip-address=需求的ip--subnet=掩码 --gateway=网关--interface=网口 ...

  8. h5预订酒店项目|html5酒店模板|h5酒店webapp开发

    近几天尝试着使用html5+css3+swiper+jqUI+layerMobile等技术开发了一款仿携程.去哪儿.艺龙webapp酒店预订系统,页面图标统一使用iconfont,仿原生app右侧弹窗 ...

  9. 安装Hive-0.10.0-CDH4.5.0所遇异常

    Note: 虚拟机访问Win7中mysql(root用户+密码) hive出现异常1: FAILED: Error in metadata: java.lang.RuntimeException: U ...

  10. 利用Windows资源监视器解决文件夹无法改名无法删除问题

    在win7等Windows系统操作文件夹更名.删除时经常会报错,操作无法完成,balabala 这个时候仅凭在用的软件去一个一个找是很难的,即便软件全关了,还有后台进程,,,奔溃吧 好了,现在我们有了 ...