我有一个网格视图,我已经为它添加了一个搜索按钮。当用户点击这个按钮时,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
首次单击“新建条件”按钮运行所有这些代码,并将新行添加到表中并显示,但在第一次单击后,其他单击,成功运行代码而不会出现错误,但不再创建新行。 你能帮我解决这个问题吗?
答案 0 :(得分:0)
我找到了解决方案。我忘了在On_Init事件中初始化我的表。这解决了我的问题