<asp:DataList ID="DLorder" runat="server" DataKeyField="MyID" Height="86px" 
            Style="z-index: 103; left: 22px; position: absolute; top: 187px" ForeColor="Green">
            <ItemTemplate>
                <table style="width: 704px; height: 65px">
                    <tr>
                        <td style="width: 40px">
                            <asp:Image ID="Image1" runat="server" Height="55px" ImageUrl='<%# Eval("FPicture")%>'
                                Width="58px" /></td>
                        <td style="width: 3px">
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("MyID") %>' Width="50px"></asp:Label></td>
                        <td style="width: 33px">
                            <asp:Label ID="Label2" runat="server" Height="22px" Text='<%# Eval("MyName") %>' Width="63px"></asp:Label></td>
                        <td style="width: 62px">
                            <asp:TextBox ID="qq" runat="server" Text='<%# Eval("MyQty")%>' Width="34px" ReadOnly="True"></asp:TextBox></td>                       
                        <td style="width: 61px">
                            <asp:Label ID="Label4" runat="server" Text='<%# Eval("MyLP")%>'></asp:Label>元</td>                       
                    </tr>
                </table>
            </ItemTemplate>
        </asp:DataList>TextBox ID="qq"存是改行商品的数量,Label ID="Label4"存的是单价,要求总价。
PS:我要写在page_load事件里,可是我不会读这单价和数量两个数据,该怎么写呢,刚学C#着实困难了。datalist有好几行的,我怎么遍历,怎么写呢?又要怎么读单价和数量呢?
还望前辈不吝赐教,新手不懂,多包涵哈。

解决方案 »

  1.   

    page_load事件  protected void Page_Load(object sender, EventArgs e)
        {
            double totalprice = 0;
            for (int i = 0; i < this.DataList1.Items.Count; i++)
            {
                int count = Convert.ToInt32((this.DataList1.Items[i].FindControl("qq") as TextBox).Text.ToString().Trim());            double price = Convert.ToDouble((this.DataList1.Items[i].FindControl("Label4") as Label).Text.ToString().Trim());            totalprice = count * price;
            }
        }
      

  2.   

                decimal dec = 0;
                foreach (DataListItem item in DataList1.Items)
                {
                    int num = Convert.ToInt32((item.FindControl("qq") as TextBox).Text);
                    decimal money = Convert.ToDecimal((item.FindControl("Label4") as Label).Text);
                    dec += num * money;
                }
                Response.Write(dec);
      

  3.   

    感谢诸位。
    可是,我还有一事求教,就是因为在订单页面上,我的datalist是分页的,可是按照各位老师的写法,它只会计算第一页的总价,而不会加上后几页的价格,这是为什么呢?该如何解决这个问题呢?
      

  4.   


    我代码是这样写的,可是还是不行,第一页还是第一页的总价,第二页就只是第二页的总价。
     public void DLorderBind(string sql)
        {
            DataSet ds = GetData(sql);
            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 4; //每页存放4个商品
            // GoodsSum.Text = pds.DataSourceCount.ToString();
            pds.CurrentPageIndex = Convert.ToInt32(IndexPage.Text) - 1;
            SumPage.Text = pds.PageCount.ToString();
            LinkUp.Enabled = true;
            LinkDown.Enabled = true;
            if (IndexPage.Text == "1")
            {
                LinkUp.Enabled = false;
            }
            if (IndexPage.Text == pds.PageCount.ToString())
            {
                LinkDown.Enabled = false;
            }
            DLorder.DataSource = pds;
            DLorder.DataBind();
            
            double totalpay = 0;      //求总价
            for (int i = 0; i < DLorder.Items.Count; i++)
                {
                    Label dj = (Label)DLorder.Items[i].FindControl("label4");
                    TextBox sl = (TextBox)DLorder.Items[i].FindControl("qq");
                    totalpay += Convert.ToInt16(dj.Text) * Convert.ToInt16(sl.Text);
                }
            Label30.Text = totalpay.ToString();
        }
      

  5.   

    我意识到自己的错误了,我绑定的是PagedDataSource   
    努力修改,看能不能算出总价来。
      

  6.   

    DataSet ds = GetData(sql);
            //计算总价,暂时绑定
            DLorder.DataSource = ds.Tables[0].DefaultView;
            DLorder.DataBind();
            double totalpay = 0;
            for (int i = 0; i < DLorder.Items.Count; i++)
            {
                Label dj = (Label)DLorder.Items[i].FindControl("label4");
                TextBox sl = (TextBox)DLorder.Items[i].FindControl("qq");
                totalpay += Convert.ToInt16(dj.Text) * Convert.ToInt16(sl.Text);
            }
            Label30.Text = totalpay.ToString();
    开心 结贴 谢谢大家 特别是wxr0323