测试表结构:
_________________
CREATE TABLE [money] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[price] [money] NULL ,
[amount] [int] NULL ,
[accumulate] [money] NULL ,
CONSTRAINT [PK_money] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GO
_________________________
webform5.aspx:
_______________
<%@ Page language="c#" Codebehind="WebForm5.aspx.cs" AutoEventWireup="false" Inherits="abc.WebForm5" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm5</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="1">
<TR>
<TD style="HEIGHT: 40px" align="center">实现repeater不刷新批量计算各列之间乘积</TD>
</TR>
<TR>
<TD align="center">
<TABLE id="Table2" cellSpacing="1" cellPadding="1" width="90%" border="1">
<TR>
<TD align="center">单价</TD>
<TD align="center">数量</TD>
<TD align="center">总计</TD>
</TR>
<asp:Repeater ID=list Runat=server>
<ItemTemplate>
<TR>
<TD><asp:Label ID=TextBox1 Runat=server Visible=False Text='<%# DataBinder.Eval(Container.DataItem,"id")%>' /><input type=text id='a<%#DataBinder.Eval(Container.DataItem,"id")%>' name='a<%#DataBinder.Eval(Container.DataItem,"id")%>' value='<%# DataBinder.Eval(Container.DataItem,"price")%>' οnblur="c<%#DataBinder.Eval(Container.DataItem,"id")%>.value=a<%#DataBinder.Eval(Container.DataItem,"id")%>.value*b<%#DataBinder.Eval(Container.DataItem,"id")%>.value;"></TD>
<TD><input type=text id='b<%# DataBinder.Eval(Container.DataItem,"id")%>' name='b<%#DataBinder.Eval(Container.DataItem,"id")%>' value='<%# DataBinder.Eval(Container.DataItem,"amount")%>' οnblur="c<%#DataBinder.Eval(Container.DataItem,"id")%>.value=a<%#DataBinder.Eval(Container.DataItem,"id")%>.value*b<%#DataBinder.Eval(Container.DataItem,"id")%>.value;"></TD>
<TD><input type=text id='c<%# DataBinder.Eval(Container.DataItem,"id")%>' name='c<%#DataBinder.Eval(Container.DataItem,"id")%>' value='<%# DataBinder.Eval(Container.DataItem,"accumulate")%>'></TD>
</TR>
</ItemTemplate>
</asp:Repeater>
</TABLE>
</TD>
</TR>
<TR>
<TD align="center"><asp:button id="Button1" runat="server" Text="提 交"></asp:button></TD>
</TR>
<TR>
<TD align="center">
<TABLE id="Table2" cellSpacing="1" cellPadding="1" width="90%" border="1">
<TR>
<TD align="center">单价</TD>
<TD align="center">数量</TD>
<TD align="center">总计</TD>
</TR>
<asp:repeater id="result" Runat="server">
<ItemTemplate>
<TR>
<TD><%# DataBinder.Eval(Container.DataItem,"price")%></TD>
<TD><%# DataBinder.Eval(Container.DataItem,"amount")%></TD>
<TD><%# DataBinder.Eval(Container.DataItem,"accumulate")%></TD>
</TR>
</ItemTemplate>
</asp:repeater></TABLE>
</TD>
</TR>
</TABLE>
</FONT>
</form>
</body>
</HTML>
_________________________
webform5.aspx.cs
__________________________-
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace abc
{
/// <summary>
/// WebForm5 的摘要说明。
/// </summary>
public class WebForm5 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Repeater list;
protected System.Web.UI.WebControls.Repeater result;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
using (SqlConnection Conn = new SqlConnection(数据库连接字符串))
{
Conn.Open();
using (SqlCommand Cmd = new SqlCommand())
{
Cmd.Connection = Conn;
Cmd.CommandText = "select * from money";
Cmd.CommandType = CommandType.Text;
SqlDataReader dr = Cmd.ExecuteReader();
list.DataSource = dr;
list.DataBind();
dr.Close();
Cmd.Dispose();
}
Conn.Dispose();
Conn.Close();
}
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
//把结果存入DATATABLE并显示出来
DataTable dt = new DataTable();
DataColumn dc = new DataColumn() ;
dc.ColumnName = "price";
dc.DataType = System.Type.GetType("System.Double");
dt.Columns.Add(dc);
DataColumn dcc = new DataColumn() ;
dcc.ColumnName = "amount";
dcc.DataType = System.Type.GetType("System.Double");
dt.Columns.Add(dcc);
DataColumn dct = new DataColumn() ;
dct.ColumnName = "accumulate";
dct.DataType = System.Type.GetType("System.Double");
dt.Columns.Add(dct);
int intCount = list.Items.Count;
for (int i = 0; i<intCount; i++)
{
DataRow dr = dt.NewRow();
string strId = ((Label)list.Items[i].FindControl("TextBox1")).Text;
dr["price"] = Request["a"+strId];
dr["amount"] = Request["b"+strId];
dr["accumulate"] = Request["c"+strId];
dt.Rows.Add(dr);
}
result.DataSource = dt;
result.DataBind();
}
}
}