不能使用VB.Net以编程方式向表中添加两行以上

时间:2015-04-07 12:01:28

标签: c# vb.net html-table

我有一个网格视图,我已经为它添加了一个搜索按钮。当用户点击这个按钮时,RadWindow会打开,其中包含一个表格,其中包含一些字段。我在RadWindow中有另一个按钮,用户可以在表中添加新行并创建新条件。

所有这些元素都是在网格视图的RowCreated事件中以编程方式创建的,如下所示:

     _updSearchBox = New UpdatePanel() With {.ID = "IdeaSearchBoxUpd" + ID.ToString(), .Page = Page}

                _imgSearch = New ImageButton() With {.ImageUrl = Page.ClientScript.GetWebResourceUrl(Me.GetType(), "IdeaComponent.Search.png"), .ViewStateMode = ViewStateMode.Disabled, .ID = "_imgSearch"}
                _imgSearch.ToolTip = "Search"
                _imgSearch.Attributes.Add("style", "margin:1px;border-radius: 3px 3px 3px 3px;")

                e.Row.Cells(0).Controls.Add(_imgSearch)

                winSearch = New RadWindow() With {.AutoSize = True, .Modal = True, .Behaviors = WindowBehaviors.None, .CenterIfModal = True}

                _btnCreateNewCondition = New Button() With {.Text = "New Condition", .ID = "_btnCreateNewCondition"}

                _tblSearch = New Table() 
                _tblSearch.Style.Add("direction", "rtl")
                _tblSearch.Style.Add("padding", "5")
                _tblSearch.Rows.Add(FilltheTableRow(CreateNewTableRow()))

                winSearch.ContentContainer.Controls.Add(_tblSearch)

                Dim ptCreateNewConditiob As AsyncPostBackTrigger = New AsyncPostBackTrigger()
                ptCreateNewConditiob.ControlID = "_btnCreateNewCondition"
                ptCreateNewConditiob.EventName = "Click"
                _updSearchBox.ContentTemplateContainer.Controls.Add(_btnCreateNewCondition)
                _updSearchBox.Triggers.Add(ptCreateNewConditiob)

                _btnExecuteCondition = New Button() With {.Text = "OK", .ID = "_btnExecuteCondition"}
                Dim ptExecuteCondition As AsyncPostBackTrigger = New AsyncPostBackTrigger()
                ptExecuteCondition.ControlID = "_btnCreateNewCondition"
                ptExecuteCondition.EventName = "Click"
                _updSearchBox.ContentTemplateContainer.Controls.Add(_btnExecuteCondition)
                _updSearchBox.Triggers.Add(ptExecuteCondition)

                _btnCancelCondition = New Button() With {.Text = "Cancel", .ID = "_btnCancelCondition"}
                _updSearchBox.ContentTemplateContainer.Controls.Add(_btnCancelCondition)

                winSearch.ContentContainer.Controls.Add(_updSearchBox)
                e.Row.Cells(0).Controls.Add(winSearch)

当用户点击Create New Condition时,我会调用以下代码:

 Dim row = FilltheTableRow(CreateNewTableRow())
        _tblSearch.Rows.Add(row)

方法是:

        Private Function CreateNewTableRow() As TableRow

        Dim tableRow As TableRow = New TableRow()
        Dim tableCell1 As TableCell = New TableCell()
        Dim tableCell2 As TableCell = New TableCell()
        Dim tableCell3 As TableCell = New TableCell()
        Dim tableCell4 As TableCell = New TableCell()

        tableRow.Cells.Add(tableCell1)
        tableRow.Cells.Add(tableCell2)
        tableRow.Cells.Add(tableCell3)
        tableRow.Cells.Add(tableCell4)

        Return tableRow

    End Function

    Private Function FilltheTableRow(ByVal row As TableRow) As TableRow

        Dim ddlFieldsList As DropDownList = New DropDownList()
        ddlFieldsList.Items.Add("F1")
        ddlFieldsList.Items.Add("F2")
        ddlFieldsList.Items.Add("F3")
        row.Cells(0).Controls.Add(ddlFieldsList)

        Dim ddlConditionsList As DropDownList = New DropDownList()
        ddlConditionsList.Items.Add("=")
        ddlConditionsList.Items.Add("<>")
        ddlConditionsList.Items.Add("LIKE")
        row.Cells(1).Controls.Add(ddlConditionsList)

        Dim txtConditionValue As TextBox = New TextBox()
        row.Cells(2).Controls.Add(txtConditionValue)

        Dim ddlConditionJointList As DropDownList = New DropDownList()
        ddlConditionJointList.Items.Add("AND")
        ddlConditionJointList.Items.Add("OR")
        ddlConditionJointList.Items.Add("IN")
        row.Cells(3).Controls.Add(ddlConditionJointList)

        Return row

    End Function

首次单击“新建条件”按钮运行所有这些代码,并将新行添加到表中并显示,但在第一次单击后,其他单击,成功运行代码而不会出现错误,但不再创建新行。 你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我忘了在On_Init事件中初始化我的表。这解决了我的问题