这里介绍两种动态创建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:批量插入数据库,此处代码省略
}
}
}

  效果如下:


由于界面太大,所以分为了两张图,此处订单信息录入与订单详细信息添加两部分都可以是一对多、多对多的关系,只要最后点击批量提价就可以一次性的插入到数据库当中了

最新文章

  1. GridView 树形结构分组的功能
  2. EasyUI---tree
  3. Linux 信号详解二(信号分类,信号处理,kill)
  4. h5的radio和check选中和不选中返回的checkd值
  5. 如何彻底的卸载和删除Windows service
  6. zabbix错误记录
  7. 【笨嘴拙舌WINDOWS】伟大的变革
  8. C# Winform AutoScaleMode属性
  9. 配置LINUX为路由
  10. 为SharePoint 2010中的FBA创建自定义登录页面
  11. Ubuntu配置Nginx虚拟主机和支持ThinkPHP
  12. Webpack4教程 - 第二部分,使用loader处理scss,图片以及转换JS
  13. 目标检测算法之YOLOv3
  14. JavaScript项目重构到底有多少坑要填要踩
  15. R语言:recommenderlab包的总结与应用案例
  16. 04-模拟String去除空格trim()方法
  17. 通过证书请求Https站点
  18. HTML代码优化中SEO要注意哪些细节
  19. SVD图片有损压缩测试
  20. C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte

热门文章

  1. Wpf 导出CSV文件
  2. UE4随笔(一)准备过程
  3. Redux其实很简单(原理篇)
  4. TDDL与Spring Boot集成Version报错——跟踪与解决
  5. CISSP一次通过指南(文末附福利)
  6. [小tips]使用vscode,根据vue模板文件生成代码
  7. python实战——网络爬虫之request
  8. Storm系列一: Storm初步
  9. rabbitmq系列一 之简单队列
  10. JavaScript 常见使用误区