none
如何動態為GridView插入一行? RRS feed

  • 問題

  • 如何動態為GridView插入一行?
    現在有個需求希望在GridView中間或任何位置之後,插入一行空行?
    怎這可以怎麼做呢?

    WindowXP SP2、Microsoft Visual Studio 2005、Access2003
    • 已移動 璉璉 2009年3月21日 上午 05:29 (由 Visual Studio一般討論區(General) 移動至 Windows Forms General)
    2009年3月1日 下午 03:19

解答

  • HI,

    如果您是要給使用者輸入新記錄的內容, 可以考慮另外製作一個輸入資料的畫面, 或是利用GridView控制項的FooterTemplate來當做輸入資料的空行
    • 已提議為解答 Lolota Lee 2009年3月4日 上午 07:59
    • 已標示為解答 Lolota Lee 2009年3月5日 上午 03:52
    2009年3月2日 上午 02:30

所有回覆

  • HI,

    如果您是要給使用者輸入新記錄的內容, 可以考慮另外製作一個輸入資料的畫面, 或是利用GridView控制項的FooterTemplate來當做輸入資料的空行
    • 已提議為解答 Lolota Lee 2009年3月4日 上午 07:59
    • 已標示為解答 Lolota Lee 2009年3月5日 上午 03:52
    2009年3月2日 上午 02:30
  •          Dim Gridviewtmp As GridView = DataList0.Items(0).FindControl("GridView1")
            Dim row2 As GridViewRow = New GridViewRow(-1, -1, DataControlRowType.Footer, DataControlRowState.Normal)
            Dim cell As TableCell = New TableCell
            cell.Text = "Footer 2"
            row2.Controls.Add(cell)

           Gridviewtmp.Controls(0).Controls.AddAt(2, row2)
    以上的敘述可以為GridView新增一行
    但是是指定在DataList0的index=0的GridView1中的Rowindex=2的狀況下
    我想問的是:
    1.如何動態取得DataList0的GridVew的index??
    (因為DataList中包著GridView)
    2.只能新增TableCell嗎?可否新增TextBox或其他的原件嗎?

    環境:WindowsXP、Microsoft Visual Studio 2005、VB.net、DataList決定主項目,GridView依DataList決定
    2009年3月11日 上午 08:59
  • 1. 您說取得GridView的Index是指?
        如果是選擇的列,可以透過SGridviewtmp.SelectedIndex來取得Index

    2. 您可以看一下TableRow的Cell屬性的定義:

    Public Overridable ReadOnly Property Cells() As System.Web.UI.WebControls.TableCellCollection
         Member of: System.Web.UI.WebControls.TableRow

    Summary:

    Gets a collection of System.Web.UI.WebControls.TableCell objects that represent the cells of a row in a System.Web.UI.WebControls.Table control.

    Return Values:
    A System.Web.UI.WebControls.TableCellCollection object that represents a collection of cells from a row of a System.Web.UI.WebControls.Table control.

    所以TableRow內只能放置TableCell.

    如果您要放置TextBox物件,可以在TableCell物件中放置:

      Dim Gridviewtmp As GridView = DataList1.Items(0).FindControl("GridView1")

            Dim row2 As GridViewRow = New GridViewRow(-1, -1, DataControlRowType.Footer, DataControlRowState.Normal)

            Dim cell As TableCell = New TableCell

     

            Dim txt As New TextBox

            txt.Text = "YYY"

            cell.Controls.Add(txt)

            row2.Controls.Add(cell)

            Gridviewtmp.Controls(0).Controls.AddAt(2, row2)



    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    2009年3月12日 上午 03:48
  • 移文至:

    Windows Forms controls,Smart Client技術相關問題。

    T.L. Cheng
    2009年3月21日 上午 05:28
  • 日前開發gridview相關程式

    需求:gridview列出全部分公司的資料,要在每個分公司資料最後加上"小計"列,最後一列為合計列

    作法:

    1. 判斷目前rowdatabound的分公司名稱是否與上一個不同,若符合,則插入一列顯示小計數量

    2. 最後一個分公司的小計列,須在footer row的rowdatabound中去插入

    3. 插入一列後,目前的gridview的列數會加一,記得把插入幾列的資訊保存下來(databranchcount),在下次要插入列的位置時,要加上,才能插入正確位置

    分享供參考

      Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        '插入小計列
        If e.Row.RowType = DataControlRowType.DataRow And BranchDropDownList.SelectedValue = "%" Then
          Dim applyline As Data.DataRowView = CType(e.Row.DataItem, System.Data.DataRowView)
          If databranch = "" Then
            databranch = applyline("branch_id")
            countsbybranch = 1
            databranchcount = 1
          Else
            If databranch = applyline("branch_id") Then
              countsbybranch += 1
            Else
              Dim tc0, tc1, tc2 As New TableCell()
              tc1.Text = "小計:" + countsbybranch.ToString + " 件"
              tc1.ColumnSpan = 12
              tc0.Text = " "
              tc2.Text = " "
    
              Dim gv_row As GridViewRow = New GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Selected)
              gv_row.Cells.Add(tc0)
              gv_row.Cells.Add(tc1)
              gv_row.Cells.Add(tc2)
              e.Row.Parent.Controls.AddAt(e.Row.RowIndex + databranchcount, gv_row)
    
              countsbybranch = 1
              databranchcount += 1
              databranch = applyline("branch_id")
            End If
          End If
        End If
    
        If e.Row.RowType = DataControlRowType.Footer Then
          Dim countsAlllabel As Label = CType(e.Row.FindControl("CountsAllLabel"), Label)
          countsAlllabel.Text = "合計:共 " & GridView1.Rows.Count & " 件"
    
          If BranchDropDownList.SelectedValue = "%" Then
            Dim tc0, tc1, tc2 As New TableCell()
            tc1.Text = "小計:" + countsbybranch.ToString + " 件"
            tc1.ColumnSpan = 12
            tc0.Text = " "
            tc2.Text = " "
    
            Dim gv_row As GridViewRow = New GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Selected)
            gv_row.Cells.Add(tc0)
            gv_row.Cells.Add(tc1)
            gv_row.Cells.Add(tc2)
            e.Row.Parent.Controls.AddAt(GridView1.Rows.Count + databranchcount, gv_row)
    
            countsbybranch = 0
            databranch = ""
            databranchcount = 0
          End If
    
        End If
      End Sub
    

    2010年12月30日 上午 02:04