Maybe the Dropdownlist should be re-bound on the Update method called when the GridView is updated.
On Jan 23, 12:48 am, Stacie <[email protected]> wrote: > The dropdown list is a list of cost codes associated with a job number > (the textbox). Anytime a user clicks the edit button on a gridview > row or if they change the job number in the textbox the dropdown list > must be populated with only the available cost codes for that specific > job number. Is there a better way to handle this? I'm a newbie so I > would appreciate any advice on a better solution. > > On Jan 22, 11:41 am, Cerebrus <[email protected]> wrote: > > > > > I have serious issues with developers using code behind functions for > > TextChanged events in Textboxes. Are you telling me that you want all > > that code (including the hit to the database) to run everytime a user > > presses a key in your textbox ??? I would strongly suggest re- > > evaluating your requirements. > > > On Jan 22, 10:07 pm, Stacie <[email protected]> wrote: > > > > I need to populate a dropdown list(DD_CostCodeEdit) in my gridview > > > based on a textbox(job) value in the gridview. I already have code to > > > populate the dropdown list on the textbox changed event but I also > > > need to populate it when in edit mode. I'm having trouble tweaking the > > > textbox changed event code to work in the row editing event code. > > > Could someone help me out? > > > I've posted my textbox changed code below: > > > > Protected Sub Job_TextChanged(ByVal sender As Object, ByVal e As > > > System.EventArgs) > > > > 'Get the row of the gridview based on the text box that raised > > > this event (realize that there is 1 textbox that raises this event in > > > each row) > > > Dim jobTextBox As TextBox = DirectCast(sender, TextBox) > > > 'Create a local dropdown instance > > > Dim costcodeDDL As KeySortDropDownList.KeySortDropDownList = > > > Nothing > > > Dim jobNumber As String = "" > > > > 'Loop thru the rows in the grid view to... > > > For Each row As GridViewRow In Me.TimecardGridView.Rows > > > '... find the job text box > > > Dim jobNoTextBox As TextBox = CType(row.FindControl > > > ("job"), TextBox) > > > If jobNoTextBox IsNot Nothing Then > > > 'compare the Unique IDs to ensure we found the correct > > > row in the grid view then... > > > If jobNoTextBox.UniqueID = jobTextBox.UniqueID Then > > > '...get a reference to the costcodeDDL so we can > > > bind the correct data to it (based on the value in job textbox) > > > > costcodeDDL = CType(row.FindControl > > > ("DD_CostCodeEdit"), DropDownList) > > > jobNumber = jobNoTextBox.Text > > > Exit For > > > End If > > > End If > > > Next > > > > 'Lets make sure we have a costcode drop down, if not, throw an > > > exception since there is a fatal error > > > Try > > > If costcodeDDL Is Nothing Then > > > Throw New Exception("CostCode drop down list is null") > > > End If > > > Catch ex As Exception > > > MsgBox(ex.Message) > > > End Try > > > > Dim oConn As New System.Data.SqlClient.SqlConnection > > > (ConfigurationManager.ConnectionStrings > > > ("CMSConnectionString").ConnectionString) > > > Dim sql As New System.Data.SqlClient.SqlCommand() > > > > sql.Connection = oConn > > > oConn.Open() > > > If jobNumber.Length > 0 Then > > > sql.Parameters.AddWithValue("jobNumber", jobNumber) > > > sql.CommandText = "SELECT CJCDI FROM dbo.Job_Cost_Codes > > > Where gjb...@jobnumber Order by CJCDI ASC" > > > > Try > > > Dim reader As System.Data.SqlClient.SqlDataReader = > > > sql.ExecuteReader() > > > 'Now the user could have entered in a value that does > > > not exist, again no need to choke, just re-execute the reader and get > > > all the values > > > If reader.HasRows Then > > > costcodeDDL.DataSource = reader > > > costcodeDDL.DataBind() > > > Else > > > > costcodeDDL.Items.Insert(0, "") > > > > End If > > > > Catch ex As Exception > > > MsgBox(ex.Message) > > > Finally > > > oConn.Close() > > > End Try > > > End If > > > > End Sub- Hide quoted text - > > - Show quoted text -
