对于这种情况,哪种控制?

时间:2013-02-27 19:53:35

标签: asp.net

我有一个包含2个下拉菜单,2个文本框和一个按钮的页面。用户将从下拉列表中选择项目,然后将数据键入文本框。完成后,他们将单击一个按钮从这些控件中获取信息并填充“订单容器”。他们将能够输入多个“订单”。

  • Gridview控件是否可以成为此“订单容器”的路径?
  • Gridview控件是否允许我插入多条记录?
  • Gridview控件是否允许删除记录?

感谢您的帮助! 麦克

更新: 以下是我更新gridview的方法:

Protected Sub imgAddOrderItemClick(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgAddOrderItem.Click
    Dim qty As String 'Integer
    Dim type As String
    Dim product As String
    Dim price As Integer
    Dim count As Integer

    count = GridView1.Rows.Count
    type = ddlProductTypes.SelectedItem.ToString
    product = ddlProductFamilies.SelectedItem.ToString
    price = 11
    qty = TextBox10.Text


    ' Populate the datatable with your data (put this in appropriate loop)        
    dr = dt.NewRow        
    dr("Type") = type
    dr("Product") = product
    dr("Qty") = qty
    dr("Price") = price

    ' Add the row
    dt.Rows.Add(dr)

    dt.AcceptChanges()

    GridView1.DataSource = dt 'GetData()
    GridView1.DataBind()

End Sub

2 个答案:

答案 0 :(得分:0)

GridView很好!

你的dt来自哪里?

我认为问题在于,当你回发时,你的dt会被初始化,因此它是空的。这就是为什么每次只获得一条(新)记录的原因。有两种方法可以对其进行排序,

(1)。你必须在你的会话中保留dt(或数据源),你的代码就可以了。

(2)。如果dt不在会话中,则需要首先遍历gridview行和列以填充已添加的数据(如果有),然后添加新订单并最终将其绑定到gridview。

希望有所帮助!

答案 1 :(得分:0)

Gridview可以正常工作。您很可能会看到您的行被覆盖,因为您的代码中的数据表(dt)正在针对每个请求进行重新实例化。你需要做的是将该表保存在内存中(例如,将它放在Session中),从那里获取它,添加新行并重新绑定GridView。像这样:

Protected Sub imgAddOrderItemClick(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgAddOrderItem.Click
dt = Session("Data")

  If dt is Nothing Then
    ' Create your DT columns here
      Session.Add("Data",dt)
  End If

  'Add rows here and rebind
  dr = dt.NewRow        
  dr("Type") = type
  dr("Product") = product
  dr("Qty") = qty
  dr("Price") = price

  ' Add the row
  dt.Rows.Add(dr)

  dt.AcceptChanges()

  GridView1.DataSource = dt 'GetData()
  GridView1.DataBind()
End Sub