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
