我想在网页中输入一些数据,数据是动态的,不知有多少行,这样怎样才能实现呢?谢谢大家。
解决方案 »
- asp转aspx页面。
- 用户控件的参数传递问题
- CreateUserWizard 创建的用户突然不能登录
- 关于在线支付
- 一直想弄明白的问题:什么才是纯正的ASP.NET页面...
- 在vs2003.net中我不小心把工具栏中的web选项卡移除了,怎么恢复呢?
- 如何获取cookies问题,我把path设置为"/ls"了,现在不知道怎么取出来
- string colvalue =((TextBox)e.Item.Cells[i].Controls[0]).Text;错误怎么纠正?
- 111111111
- 数据库字段问题
- [请教]采购招标系统(B/S结构)解决方案
- 请教,用IE监控实时画面,是不是都要用上meta属性来自动刷新画面数据
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>多行录入提交</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 32px" runat="server"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="id">
<ItemTemplate>
<%# " --"+DataBinder.Eval(Container.DataItem,"id") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList id="DropDownList1" runat="server">
<asp:ListItem Value="AAA">AAA</asp:ListItem>
<asp:ListItem Value="BBB">BBB</asp:ListItem>
<asp:ListItem Value="CCC">CCC</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="name" HeaderText="姓名"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
<asp:Button id="btnAddNew" style="Z-INDEX: 102; LEFT: 560px; POSITION: absolute; TOP: 64px"
runat="server" Text="AddNew"></asp:Button>
<asp:Button id="btnSave" style="Z-INDEX: 103; LEFT: 560px; POSITION: absolute; TOP: 104px" runat="server"
Text="Submit"></asp:Button>
</form>
</body>
</HTML>
using System.Data;
using System.Web.UI.WebControls;namespace bsTest2005_8_16.Samples
{
/// <summary>
/// 多行录入提交 的摘要说明。
/// </summary>
public class 多行录入提交 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btnAddNew;
protected System.Web.UI.WebControls.Button btnSave;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
/// <summary>
/// 属性:当前编辑中的数据集
/// </summary>
private DataTable CurrentData
{
get
{
return (ViewState["_CurrentData"]==null)?CreateTable():(DataTable)ViewState["_CurrentData"];
}
set
{
ViewState["_CurrentData"] = value;
}
} private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
this.DataGrid1.DataSource = this.CurrentData;
this.DataGrid1.DataBind();
}
} private DataTable CreateTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.AcceptChanges();
return dt;
} private void CollectDataFromGrid()
{
DataTable dt = this.CurrentData;
if(dt.Rows.Count>0)
{
DropDownList ddlst = this.DataGrid1.Items[DataGrid1.EditItemIndex].Cells[0].FindControl("DropDownList1") as DropDownList;
dt.Rows[dt.Rows.Count-1]["id"] = ddlst.SelectedValue;
dt.Rows[dt.Rows.Count-1]["name"] = ((TextBox)this.DataGrid1.Items[DataGrid1.EditItemIndex].Cells[1].Controls[0]).Text;
}
this.CurrentData = dt;
}
private void btnAddNew_Click(object sender, System.EventArgs e)
{
CollectDataFromGrid();//收集之前一行的输入 //增加一个新的空行
DataTable dt = this.CurrentData;
DataRow r = dt.NewRow();
dt.Rows.Add(r);
//当前编辑行定位到新行
this.DataGrid1.EditItemIndex = dt.Rows.Count-1;
this.DataGrid1.DataSource = dt;
this.DataGrid1.DataBind();
} private void btnSave_Click(object sender, System.EventArgs e)
{
DataTable dt = this.CurrentData;//取得最终录入的多行数据
//保存到数据库,实现方法一般有两种,要么是DataAdapter.Update方法,要么是自己写SQL语句
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnAddNew.Click += new System.EventHandler(this.btnAddNew_Click);
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
另外有没有vb方面的呀
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>多行录入提交</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 32px" runat="server"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="id">
<ItemTemplate>
<%# " --"+DataBinder.Eval(Container.DataItem,"id") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList id="DropDownList1" runat="server">
<asp:ListItem Value="AAA">AAA</asp:ListItem>
<asp:ListItem Value="BBB">BBB</asp:ListItem>
<asp:ListItem Value="CCC">CCC</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="name" HeaderText="姓名"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
<asp:Button id="btnAddNew" style="Z-INDEX: 102; LEFT: 560px; POSITION: absolute; TOP: 64px"
runat="server" Text="AddNew"></asp:Button>
<asp:Button id="btnSave" style="Z-INDEX: 103; LEFT: 560px; POSITION: absolute; TOP: 104px" runat="server"
Text="Submit"></asp:Button>
</form>
</body>
</HTML>
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents btnAddNew As System.Web.UI.WebControls.Button
Protected WithEvents btnSave As System.Web.UI.WebControls.Button '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region
Private Property CurrentData() As DataTable
Get
If ViewState("_CurrentData") Is Nothing Then
Return CreateTable()
Else
Return CType(ViewState("_CurrentData"), DataTable)
End If
End Get
Set(ByVal Value As DataTable)
ViewState("_CurrentData") = Value
End Set
End Property
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
DataGrid1.DataSource = Me.CurrentData
DataGrid1.DataBind()
End If
End Sub Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click
CollectDataFromGrid() '/收集之前一行的输入 '增加一个新的空行
Dim dt As DataTable = CurrentData
Dim r As DataRow = dt.NewRow()
dt.Rows.Add(r)
dt.AcceptChanges()
Me.CurrentData = dt '当前编辑行定位到新行
DataGrid1.EditItemIndex = dt.Rows.Count - 1
DataGrid1.DataSource = dt
DataGrid1.DataBind() End Sub Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim dt As DataTable = CurrentData '取得最终录入的多行数据
'保存到数据库,实现方法一般有两种,要么是DataAdapter.Update方法,要么是自己写SQL语句
'省略.....
End Sub Private Function CreateTable() As DataTable
Dim dt As New DataTable
dt.Columns.Add("id")
dt.Columns.Add("name")
dt.AcceptChanges()
Return dt
End Function
Private Sub CollectDataFromGrid()
Dim dt As DataTable = Me.CurrentData
If dt.Rows.Count > 0 Then
Dim ddlst As DropDownList = Me.DataGrid1.Items(DataGrid1.EditItemIndex).Cells(0).FindControl("DropDownList1")
dt.Rows(dt.Rows.Count - 1)("id") = ddlst.SelectedValue
dt.Rows(dt.Rows.Count - 1)("name") = CType(DataGrid1.Items(DataGrid1.EditItemIndex).Cells(1).Controls(0), TextBox).Text Me.CurrentData = dt
End If End Sub
End Class