gridview的绑定表达式的问题

时间:2011-03-23 18:11:11

标签: c# asp.net

假设我有以下课程

public partial class invoice
{
 public list<lineitem> lineitem;
}

public partial class lineitem
{
  private Quantity quantity = new Quantity();
        public Quantity Quantity
        {
            get { return quantity; }
            set { quantity = value; }

        }
}

如何将值绑定到gridview。

public void lbluom_OnDataBinding(object sender, System.EventArgs e)
{
            for (int i = 0; i < invoicetransmit.Invoice.Count; i++)
            {
                Label lbl = (Label)sender;
                lbl.Text = 
                invoicetransmit.Invoice[0].LineItem[i].Quantity.Value.ToString();
            }

如果我这样做,gridview中的值将被最新值覆盖......下面这个值

public void lbluom_OnDataBinding(object sender, System.EventArgs e)
        {
            for (int i = 0; i < invoicetransmit.Invoice.Count; i++)
            {
                Label lbl = (Label)sender;
                lbl.Text = Eval("Value")                
            } property does not exist.
        }
    }

这是我向网格添加值的方式

 public void Addtogrid()
    {
        //var lineItems = (Session["BillXML"] as InvoiceTransmission).Invoice[0].LineItem;
        invoicetransmit.Invoice[0].LineItem.Add(new LineItem {MaterialCode = MaterialCode.Text, ChargeCode = ChargeCode.Text, CostCenter = CostCenter.Text, GLAccount = GLAccount.Text });

        //lineItems.Add(new LineItem { MaterialCode=MaterialCode.Text,ChargeCode=ChargeCode.Text,CostCenter=CostCenter.Text,GLAccount=GLAccount.Text});
       for (int i = 0; i < invoicetransmit.Invoice[0].LineItem.Count; i++)
        {
            invoicetransmit.Invoice[0].LineItem[i].Quantity.UOMCode = UOM.Text;
            invoicetransmit.Invoice[0].LineItem[i].Quantity.Value = Convert.ToDecimal(Quantity.Text);
            invoicetransmit.Invoice[0].LineItem[i].UnitPrice.Value = Convert.ToDecimal(Price.Text);
            //invoicetransmit.Invoice[0].LineItem[i].TotalNetAmount = (invoicetransmit.Invoice[0].LineItem[i].Quantity.Value) * (invoicetransmit.Invoice[0].LineItem[i].UnitPrice.Value);
            invoicetransmit.Invoice[0].LineItem[i].TotalNetAmount = ( Convert.ToDecimal(Quantity.Text) )* (Convert.ToDecimal(Price.Text));
            GridView1.DataSource = invoicetransmit.Invoice[0].LineItem;
            // GridView1.DataSource = lineItems;
            GridView1.DataBind();
            //}

请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

尝试RowDataBound事件

  <asp:GridView ID="GridView1" runat="server" 
        onrowdatabound="GridView1_RowDataBound">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Label lbl = (Label) e.Row.FindControl("Label1");
        if(lbl!=null)
        {
            lbl.Text = invoicetransmit.Invoice[0].LineItem[e.Row.RowIndex].Quantity.Value.ToString();
        }
    }

}
相关问题