怎么动态给Gridview添加数据

怎么动态给Gridview添加数据,第1张

动态生成List<string>,然後绑定到GridView1

看看这个,用STATIC变量来保存数据,提交的时候移除。

--CS

using System

using System.Data

using System.Configuration

using System.Collections

using System.Web

using System.Web.Security

using System.Web.UI

using System.Web.UI.WebControls

using System.Web.UI.WebControls.WebParts

using System.Web.UI.HtmlControls

using System.Collections.Generic

public partial class Default4 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

Session["A"] = "AAA"

}

}

//通过sessionid能获取维一的客户段内容

protected void addyearPro_Click(object sender, EventArgs e)

{

string SessionID = Session.SessionID

string Name = NAME.Text

string Qty = NUM.Text

Product pc = new Product(Name, Qty)

List<Product>newPList = ManagerProcut.Find(SessionID)

if (newPList != null)

{

newPList.Add(pc)

}

else

{

newPList = new List<Product>()

newPList.Add(pc)

ManagerProcut.pc.Add(SessionID, newPList)

}

GridView1.DataSource = newPList

GridView1.DataBind()

}

//来临时保存客户端的内容

public static class ManagerProcut

{

public static Dictionary<string, List<Product>>pc = new Dictionary<string, List<Product>>()

public static List<Product>Find(string Key)

{

if (pc.ContainsKey(Key))

{

return pc[Key]

}

else

{

return null

}

}

public static bool Remove(string Key)

{

if (pc.ContainsKey(Key))

{

return pc.Remove(Key)

}

else

{

return false

}

}

}

public class Product

{

public Product(string ProductName,string Qty)

{

this._ProductName = ProductName

this._Qty = Qty

}

private string _ProductName

private string _Qty

public string ProductName

{

get { return _ProductName}

set { _ProductName = value}

}

public string Qty

{

get { return _Qty}

set { _Qty = value}

}

}

protected void Button1_Click(object sender, EventArgs e)

{

foreach (GridViewRow gr in GridView1.Rows)

{

Response.Write("<p>新记录:")

foreach (TableCell tc in gr.Cells)

{

Response.Write("<br/>")

Response.Write(tc.Text)

}

Response.Write("</p>")

}

string SessionID = Session.SessionID

ManagerProcut.pc.Remove(SessionID)//移除

}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

String Sessionid = Session.SessionID

GridViewRow gr = GridView1.Rows[e.RowIndex]

string ProductName = gr.Cells[0].Text

List<Product>per = ManagerProcut.Find(Sessionid)

if (per.Count >0)

{

Product pdt = null

foreach (Product pr in per)

{

if (pr.ProductName == ProductName)

{

pdt = pr

break

}

}

if (pdt != null)

{

bool m = per.Remove(pdt)

if (m)

{

GridView1.DataSource = per

GridView1.DataBind()

}

}

}

}

_aspx

<!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 id="Head1" runat="server">

<title>未命名页面</title>

</head>

<body>

<form id="Form1" runat="server">

<div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="185px" OnRowDeleting="GridView1_RowDeleting">

<Columns>

<asp:BoundField HeaderText="产品名称" DataField="PRoductName" />

<asp:BoundField HeaderText="产品数量" DataField="QTY" />

<asp:ButtonField HeaderText ='Delete' CommandName="DELETE" Text="Delete"/>

</Columns>

</asp:GridView>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="11%" style="height: 24px">

<asp:TextBox ID="NAME" runat="server" /></td>

<td width="14%" style="height: 24px">

<asp:TextBox ID="NUM" runat="server" /></td>

<td width="75%" style="height: 24px">

</td>

</tr>

<tr>

<td>

</td>

<td>

</td>

<td>

<asp:Button ID="Button1" runat="server" Text="增加" OnClick="addyearPro_Click" /></td>

</tr>

</table>

<asp:Button ID="Button2" runat="server" Text="提交" OnClick="Button1_Click" />

</div>

</form>

</body>

</html>

可以使用a=gridview1.rows.count获得gridview的行数,再用gridview1.rows[a].cells[1]="P20"就可以加进去了。以上可能有误,不过思路是这样。可以取出gridview的值,可以修改gridview的值,问题就简单了

首先你要明确的是gridview的显示数据全部是从数据源里查出来的

不管是DataSource还是一个List还是DataTable

所以你想改变前边的显示数据就必须要改变数据源(用js实现除外)

假设你的数据源是List(对象名:list)

1.添加一行:

从页面中获得新值的数据(放几个文本框手动输入)

点一个按钮时

实例化一个对像(你数据的封装对象)

比如叫UserInfo

UserInfo

newUser

=

new

UserInfo()

newUser.Name

=

"获得文本框的值"

newUser.Address

=

"获得文本框的值"

list.Add(newUser)

BindMethod()//绑定数据的方法

2.删除数据:

比如你想删除第二行

当点击按钮时要把2传给方法或都保证能从后台获取到

list.RemoveAt(2)//2是获取到的

BindMethod()

不知道是不是这个意思


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/7906308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存