Teoh Chia Wei Ответов: 1

Создание нескольких gridview с помощью кода в aspx .NET


Уважаемые эксперты,
Я работаю над созданием нескольких gridview для создания отчетов на основе категорий. каждый gridview имеет поля сохранения данных. единственное отличие-это данные. Я пытаюсь искать через google... у меня есть идея... но не работает...

Я надеюсь, что эксперты могут помочь

Что я уже пробовал:

Private dynamicGrids() As GridView

    Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
        Dim myControl As Control = GetPostBackControl(Me.Page)

        If (myControl IsNot Nothing) Then
            If (myControl.ClientID.ToString() = "btnAddGrid") Then
                myCount = myCount + 1
            End If
        End If
    End Sub

    Protected Overrides Sub OnInit(ByVal e As EventArgs)
        MyBase.OnInit(e)
        dynamicGrids = New GridView(myCount - 1) {}
        Dim i As Integer

        For i = 0 To myCount - 1 Step i + 1
            Dim dynGridView As New GridView
            dynGridView.ID = "Gridview" + (i + 1).ToString

            gridPlaceHolder.Controls.Add(dynGridView)
            dynamicGrids(i) = dynGridView

            PopulateGrids(dynGridView)

            Dim literalBreak As LiteralControl = New LiteralControl("<br />")
            gridPlaceHolder.Controls.Add(literalBreak)
        Next
    End Sub


    Protected Sub btnAddGrid_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddGrid.Click
        ' Handled in preInit due to event sequencing.

    End Sub

    Public Shared Function GetPostBackControl(ByVal thePage As Page) As Control
        Dim myControl As Control = Nothing
        Dim ctrlName As String = thePage.Request.Params.Get("__EVENTTARGET")
        If ((ctrlName IsNot Nothing) And (ctrlName <> String.Empty)) Then
            myControl = thePage.FindControl(ctrlName)
        Else
            For Each Item As String In thePage.Request.Form
                Dim c As Control = thePage.FindControl(Item)
                If (TypeOf (c) Is System.Web.UI.WebControls.Button) Then
                    myControl = c
                End If
            Next

        End If
        Return myControl
    End Function

    Private Sub PopulateGrids(ByVal grd As GridView)
        Dim b As New BusinessRules.BusinessRules

        If grd.ID = "Gridview1" Then
            grd.DataSource = b.GetData("Select CategoryId, CategoryName from Categories")
        ElseIf grd.ID = "Gridview2" Then
            grd.DataSource = b.GetData("Select OrderID, OrderDate from Orders")
        ElseIf grd.ID = "Gridview3" Then
            grd.DataSource = b.GetData("Select productid, productname from products")
        ElseIf grd.ID = "Gridview4" Then
            grd.DataSource = b.GetData("Select customerid, Companyname from customers")
        Else
            grd.DataSource = b.GetData("Select supplierid, Companyname from Suppliers")
        End If
        grd.DataBind()
    End Sub

Gerry Schmitz

Так что же происходит с кодом, который вы написали? Или это проверка кода? Но это не вопрос.

1 Ответов

Рейтинг:
0

Teoh Chia Wei

с моей страницы aspx
поместите следующий код

<asp:PlaceHolder ID="gridPlaceHolder" runat="server"></asp:PlaceHolder>


и коды на стороне сервера:
Private dynamicGrids() As GridView
Private Sub getBOMComp()
      Dim ds1 As New DataSet
      Dim iGV As Integer = 0
      Try
          If SQLConnected() Then
              ds1 = getBOMCompTitle()
              If dsCheck(ds1) Then
                  dynamicGrids = New GridView(ds1.Tables(0).Rows.Count - 1) {}
                  For Each r As DataRow In ds1.Tables(0).Rows
                      Dim dynGridView As New GridView
                      iGV += 1
                      dynGridView.ID = "Gridview" + (iGV).ToString
                      setGVColumnsProperties(dynGridView, r("brdBomTtl").ToString)
                      PopulateGrids(dynGridView, r("brdBomTtl").ToString)
                      gridPlaceHolder.Controls.Add(dynGridView)
                      dynamicGrids(iGV - 1) = dynGridView
                      Dim literalBreak As LiteralControl = New LiteralControl("<br />")
                      gridPlaceHolder.Controls.Add(literalBreak)
                  Next
              End If
          End If
      Catch ex As Exception
          PromptError(ex.Message)
      End Try
  End Sub