这里介绍两种动态创建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. win 10 mysql8.0安装

    1.解压缩安装包(记住自己的解压到那个目录,后面需要) 2.找到此电脑,然后找到属性(小编这里win10) 3.点击左侧高级系统设置 4.选择下面的环境变量 5.选择下面的新建,然后看图片,上面输入M ...

  2. FastAdmin 前端页面传参

    如果我们需要自己在控制器中透传数据到JS中去,则可以使用控制器的assignconfig方法来透传,使用如下 $this->assignconfig('demo', ['name'=>'名 ...

  3. Mac 忘记密码

    今天早上到公司发现电脑被动过,马上查看浏览器的历史记录,果然发现了一些痕迹.虽然是公司的电脑,但是随便被人翻看,还是很不爽! 于是马上把原来公司给的默认密码改掉. 不料,中午出去吃了个饭,回来就把密码 ...

  4. 浅谈对MVC的认识

    MVC是model(模型),view(视图),Controller(控制)的缩写. 模型层负责提供数据,和数据库相关的操作都交给模型层处理: 视图层提供交互的界面,其输出数据: 控制层负责接收各种请求 ...

  5. 网站引入外部js

    有时想看某个网站下一些数据,需要用到js做一个实时的筛选,却又苦于该网站没用jQuery导致想使用jQuery时,还无法下手,那么下面这段js或许可以帮助你.1.打开我们的chrome调试工具,切换到 ...

  6. python 实现视频的下载以及断点续传

    ---恢复内容开始--- 一般情况下我们使用爬虫更多的应该是爬数据或者图片吧,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同样 ...

  7. OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸

    #include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgu ...

  8. flex的使用以及布局

    1.添加flex属性后的区别 <style> body{ font-size:35px; } .flex-box{ display:flex; display: -webkit-flex; ...

  9. unity 图片 粉碎效果 破碎效果

    效果: 点击按钮后: 这些碎片具有物理碰撞效果,下面会有隐形的支柱垫着碎片,n秒后支柱消失,碎片落下 当然你也可以控制生成的碎片,让他们从下而上一块一块地落下 插件源码: https://github ...

  10. 图形学 shader教程推荐

    https://www.bilibili.com/video/av37119580  http://edu.manew.com/my/course/96 http://edu.manew.com/my ...