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 SubCode: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 SubI 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?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
Does anyone has idea on this?
Help Please




Reply With Quote