实现repeater不刷新批量计算各列之间乘积

    技术2022-05-11  135

    测试表结构:

    _________________

    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();      } }}


    最新回复(0)