这里介绍两种动态创建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#跨线程操作UI

    WPF启动调度器 : Dispatcher.Invoke(new Action(() => { //你的代码 }));

  2. 网易云复盘:云计算前端这一年(AngularJS粉慎入)

    本文由  网易云发布. 作者:赵雨森 2017年的前端已然没有剧烈的变动,但发展势头仍然不减.语言.标准.框架和库逐渐稳定和完善,各团队再也不用花大把精力放在造轮子上,而更多的是去积累所需的组件库.开 ...

  3. 网易云基于 Kubernetes 的深度定制化实践

    本文由  网易云发布. 2017 年,Kubernetes 超越 Mesos 和 Docker Swarm成为最受欢迎的容器编排技术.网易云从 2015 下半年开始向 Kubernetes 社区贡献代 ...

  4. Restframework 频率throttle组件实例-3

    频率逻辑: from rest_framework.throttling import BaseThrottle import time VISIT_RECORD={} class VisitThro ...

  5. s11 day100路飞项目逻辑购物车一

    Luffy项目 先看练习,如下: 一. 添加购物车和查看 1. url url(r'^shoppingcar/$', shoppingcar.ShoppingCarView.as_view({&quo ...

  6. 【2019年OCP新题】OCP题库更新出现大量新题-10

    10.Which two statements are true about SQL*Loader Express Mode in an Oracle 12c database? A) It can ...

  7. sql语句应考虑哪些安全性?

    (1)少使用root账户,应该为不同的动作分配不同的账户: (2)sql执行出错后,不能把数据库中显示的出错信息,直接展示给用户.防止泄露服务器和数据库相关信息: (3)防止sql注入,对特殊字符进行 ...

  8. Kafka文件存储机制

    一.topic中partition存储分布 在本地的kafka中,我们只启动一个broker,创建两个topic:single-todo和single-todo-vip ,每个topic有两个part ...

  9. 模仿 AppStore 顶部动画

    App Store 顶部动画 App Store 中 Games.Apps.Updates 的顶部动画的特点: 自然状态下是大标题,右边有一个 button 顶上去时,变成小标题,右边按钮消失 导航栏 ...

  10. 请求数据分析 xpath语法 与lxml库

    前情提要: 上节学过从网上获取请求,获取返回内容,带理 获取内容之后,第二部就是获取请求的数据分析 一:xpath 语法 浏览器一般会自带xpatn 解析 这里大概讲述一下xpath 的基本操作 二: ...