I have a grid view that is dynamically created.In which every cell in the girdview has a 2 textbox (cTxtboxQty,ctxtWorkOrder) and 2 label.
When user click on the cell, a pop up come out and user are able to change the text inside the cell and click save.After that the pop up close and changed data immediately reflected on the screen.
My problem is:
After my data are changed and updated to database on the pop up page and having it post back to the parent page , my dynamically created textbox in gridview retain old value even new value has been assigned to it.
This sound very weird but i have no idea how to solve this.
My client side code is as below :
Code:
<asp:GridView ID="gvDynamic" runat="server" >
</asp:GridView>
Code:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim strCNo As String
Dim strPlant As String
Dim strCTBSet As String
Dim iRev As Integer
Try
strCNo = Session("s_cno").ToString()
strPlant = Session("s_plant").ToString()
strCTBSet = ddlCTBSet.SelectedItem.Value
iRev = getHighestRev(strCNo, strPlant, strCTBSet)
GenerateControl(strCNo, strPlant, strCTBSet, iRev)
Catch ex As Exception
Throw ex
End Try
End Sub
Code:
Private Sub GenerateControl(ByVal vstrCNo As String, ByVal vstrPlant As String, ByVal vstrCTBSet As String, ByVal viRev As Integer)
Try
mdsResult.Clear()
mdsDistinctDate.Clear()
mdsDistinctShift.Clear()
mdsDistinctLine.Clear()
mdsLineShiftInfo.Clear()
mdsGridViewTemplate.Clear()
gvDynamic.Controls.Clear()
mdsResult = getResult(vstrCNo, vstrPlant, viRev, vstrCTBSet)
mdsDistinctDate = getDistinctDate(vstrCNo, vstrPlant, viRev, vstrCTBSet)
mdsDistinctShift = getShiftByCNoPlant(vstrCNo, vstrPlant)
mdsDistinctLine = getLineByCNoPlant(vstrCNo, vstrPlant)
mdsLineShiftInfo = getLineShiftInfo(vstrCNo, vstrPlant, viRev, vstrCTBSet)
CreateDynamicDataset()
ArrangeDataTomdsGridViewTemplate()
mdsGridViewTemplate.WriteXml("/mdsGridViewTemplate.xml")
mdsResult.WriteXml("/mdsResult.xml")
gvDynamic.DataSource = mdsGridViewTemplate
gvDynamic.DataBind()
GroupGridView()
CreateDynamicControl()
Catch ex As Exception
Throw ex
End Try
End Sub
Code:
Private Sub CreateDynamicControl()
Dim i As Integer
Dim iCellIndex As Integer
Dim drFoundRecord As Data.DataRow()
'i ned to change cell location for line shift date wt should i do??
Try
For i = 0 To gvDynamic.Rows.Count - 1
For iCellIndex = 1 To gvDynamic.Rows(i).Cells.Count - 1
If gvDynamic.Rows(i).Cells(iCellIndex).ID Is Nothing = False Then
Dim cLabelItem As New Label
Dim cTxtboxQty As New TextBox
Dim cLabelWorkOrder As New Label
Dim cTxtWorkOrder As New TextBox
Dim cLiteraSpace1 As New LiteralControl
Dim cLiteraSpaceBR As New LiteralControl
Dim cLiteraSpace2 As New LiteralControl
Dim cHtmlTable As New HtmlTable
Dim radMenu As New Telerik.Web.UI.RadContextMenu
Dim radMenuItem As New Telerik.Web.UI.RadMenuItem
Dim radMenuItem2 As New Telerik.Web.UI.RadMenuItem
Dim radMenuItem3 As New Telerik.Web.UI.RadMenuItem
Dim target As New Telerik.Web.UI.ContextMenuControlTarget
drFoundRecord = getRecordByKey(gvDynamic.Rows(i).Cells(iCellIndex).ID)
If drFoundRecord.Length > 0 Then
If drFoundRecord(0)("PlanNumber") = 3 Then
Dim a As String
a = "sfsdf"
End If
If drFoundRecord(0)("Firm") = "Y" Then
cLabelItem.CssClass = "gridFirm"
cTxtboxQty.CssClass = "gridFirm"
cLabelWorkOrder.CssClass = "gridFirm"
cTxtWorkOrder.CssClass = "gridFirm"
ElseIf drFoundRecord(0)("Changed") = "Y" Then
cLabelItem.CssClass = "gridChange"
cTxtboxQty.CssClass = "gridChange"
cLabelWorkOrder.CssClass = "gridChange"
cTxtWorkOrder.CssClass = "gridChange"
ElseIf drFoundRecord(0)("Change") = "N" And drFoundRecord(0)("Firm") = "N" Then
cLabelItem.CssClass = "gridPlan"
cTxtboxQty.CssClass = "gridPlan"
cLabelWorkOrder.CssClass = "gridPlan"
cTxtWorkOrder.CssClass = "gridPlan"
End If
cHtmlTable = CreateDynamicHTMLTable()
' 1 label, 1 txtbox,br,label,txtbox, 1 hover menu
cLabelItem.ID = "lblItem" & gvDynamic.Rows(i).Cells(iCellIndex).ID
cTxtboxQty.ID = "txtQty" & gvDynamic.Rows(i).Cells(iCellIndex).ID
cLabelWorkOrder.ID = "lblWorkOrder" & gvDynamic.Rows(i).Cells(iCellIndex).ID
cTxtWorkOrder.ID = "txtWorkOrder" & gvDynamic.Rows(i).Cells(iCellIndex).ID
cLabelItem.Text = drFoundRecord(0)("Planned_Item")
cTxtboxQty.Text = drFoundRecord(0)("Planned_Quantity")
cLabelWorkOrder.Text = "W/O"
cTxtWorkOrder.Text = drFoundRecord(0)("WorkOrderNo")
cTxtboxQty.ToolTip = "Quantity"
cTxtWorkOrder.ToolTip = "Work Order Number"
cTxtboxQty.Width = 50
cTxtWorkOrder.Width = 50
radMenu.ID = "radMenu" & gvDynamic.Rows(i).Cells(iCellIndex).ID
radMenuItem.Text = "Edit"
radMenuItem2.Text = "Delete"
If drFoundRecord(0)("Firm") = "Y" Then
radMenuItem3.Text = "UnFirm"
Else
radMenuItem3.Text = "Firm"
End If
radMenu.Items.Add(radMenuItem)
radMenu.Items.Add(radMenuItem2)
radMenu.Items.Add(radMenuItem3)
target.ControlID = gvDynamic.Rows(i).Cells(iCellIndex).ID 'cLabelItem.ID
radMenu.Targets.Add(target)
AddHandler radMenu.ItemClick, AddressOf cRadMenuItem1Click
cHtmlTable.Rows(0).Cells(0).Controls.Add(radMenu)
cHtmlTable.Rows(0).Cells(0).Controls.Add(cLabelItem)
cHtmlTable.Rows(0).Cells(1).Controls.Add(cTxtboxQty)
cHtmlTable.Rows(1).Cells(0).Controls.Add(cLabelWorkOrder)
cHtmlTable.Rows(1).Cells(1).Controls.Add(cTxtWorkOrder)
gvDynamic.Rows(i).Cells(iCellIndex).Controls.Add(cHtmlTable)
End If
End If
Next
Next
Catch ex As Exception
Throw ex
End Try
End Sub
I have tested many times and find out that it might be the page hold the old value in memory, so that even we have updated the textbox value, after postback, it still keep and show the old value?
Does anyone has idea on this?
Help Please