将DataView绑定到DataList,并调用服务器方法计算
后台CS代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string conString = "data source =127.0.0.1;initial catalog=codematic;user id=sa;password = "; SqlConnection myConnection = new SqlConnection(conString); string strSQL = "select * from P_Product"; DataSet ds = new DataSet(); myConnection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(strSQL, myConnection); adapter.Fill(ds, "ds"); myConnection.Close(); DataView dv = ds.Tables[0].DefaultView; this.DataList1.DataSource = dv; this.DataList1 .DataBind(); } } //计算差额的方法 public string odds(object a, object b) { return string.Format("{0:n}", ((decimal)a - (decimal)b)); }
前台页面HTML代码:
<form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server"> <HeaderTemplate> <table> <tr> <td> 商品 </td> <td> 价格 </td> <td> 促销价 </td> <td> 差额 </td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table> <tr> <td> <%# string.Format("{0:c}",((System.Data.DataRowView )Container .DataItem)["Name"]) %> </td> <td> <%# string.Format("{0:c}",((System.Data.DataRowView )Container .DataItem)["Price"]) %> </td> <td> <%# string.Format("{0:c}",((System.Data.DataRowView )Container .DataItem)["VipPrice"]) %> </td> <td> <%# odds(((System.Data.DataRowView)Container .DataItem)["Price"],((System .Data.DataRowView)Container .DataItem)["VipPrice"]) %> </td> </tr> </table> </ItemTemplate> </asp:DataList> </div> </form>
动态绑定各字段数据,最后一列调用服务器odds计算两个字段的差额。