Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

why is my dropdownlist in gridview not updated?

Posted on 2012-04-02
8
Medium Priority
?
296 Views
Last Modified: 2012-04-03
the new productname is written to the database, but databind will not show the new productname. See code

Thanks in advanced

<asp:TemplateField HeaderText="Product in Actie" Visible="True">
                    <ItemTemplate>
                          <asp:DropDownList ID="ddlProducts" runat="server" DataSourceID="AccessDataSourceProducts"
                        DataTextField="ProductName" DataValueField="ProductID" 
                        AppendDataBoundItems="True" Width="302px" TabIndex="9019"  
                      >
                         <asp:ListItem Text="" Value="" />
                    </asp:DropDownList>

Open in new window


  Dim txProductNameManual As TextBox = GridView1.Rows(RowIndex).Cells(14).FindControl("txProductNameManual")

            If Len(txProductNameManual.Text) > 0 Then
                Dim sqlstring_product As String = "INSERT INTO Products " _
                                                    & "(ProductName) " _
                                                    & "VALUES (@ProductName)"

                Dim cmd_product As New OleDbCommand(sqlstring_product, con)
                cmd_product.CommandType = CommandType.Text
                cmd_product.Parameters.AddWithValue("@ProductName", Strings.Trim(txProductNameManual.Text))

                cmd_product.ExecuteNonQuery()
                cmd_product.Parameters.Clear()

                Dim ddlProducts As DropDownList = GridView1.Rows(RowIndex).Cells(13).FindControl("ddlProducts")
                ddlProducts.DataBind()

Open in new window

0
Comment
Question by:Amien90
  • 5
  • 3
8 Comments
 

Author Comment

by:Amien90
ID: 37798905
i think i need to do a datasource again before the databind? can't i just execute a select again on my DataSourceID?
0
 

Author Comment

by:Amien90
ID: 37799719
or any other way to update my datasource? do i really need to create a new table, execute a select query and then a databind?
0
 
LVL 7

Expert Comment

by:dhawalseth
ID: 37799852
Dear Amien90,
You do need to do a 'update datasource' before doing a databind. Or else bind your drop down list on grid view row databound. Whenever your grid view will reload, which i believe will happen when a new entry is made in the db, the rows will be recreated and drop down will bind with the help of your code.

Mark as answer if helped.
Enjoy!!
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

Author Comment

by:Amien90
ID: 37799857
Thanks for your reply.

"You do need to do a 'update datasource' before doing a databind. "

how can i do this? whats the syntax, cant find it.
0
 
LVL 7

Expert Comment

by:dhawalseth
ID: 37799907
Use your sql query used to initially populate the drop down. Replace your dropdown.databind with the code below:

dropdown.Datasource = (your datasource object);
//set data text, and data value here.
dropdown.Databind();

Mark as answer if helped.
Enjoy!!
0
 

Author Comment

by:Amien90
ID: 37799925
This :  

 Dim ddlProducts As DropDownList = GridView1.Rows(RowIndex).Cells(13).FindControl("ddlProducts")

ddlProducts.DataSource = AccessDataSourceProducts
ddlProducts.DataBind()

gives me this error:

Both DataSource and DataSourceID are defined on 'ddlProducts'.  Remove one definition.

  <asp:DropDownList ID="ddlProducts" runat="server" DataSourceID="AccessDataSourceProducts"
                        DataTextField="ProductName" DataValueField="ProductID" 
                        AppendDataBoundItems="True" Width="302px" TabIndex="9019"  

Open in new window

0
 
LVL 7

Accepted Solution

by:
dhawalseth earned 2000 total points
ID: 37800097
It means you are binding the same control twice. I would recommend you remove the binding mentioned in the UI and populate your datasource through code from code behind.
The call from the UI is made when you first render your dropdown and anyway you have to bind it again after update.
Look in the code (RowDataBound event) and bind your control in there.. it is pretty similar to what will happen when you do a data binding from UI.
0
 

Author Comment

by:Amien90
ID: 37800815
Fixed!
 Dim txProductNameManual As TextBox = GridView1.Rows(RowIndex).Cells(14).FindControl("txProductNameManual")

            If Len(txProductNameManual.Text) > 0 Then
                Dim sqlstring_product As String = "INSERT INTO Products " _
                                                    & "(ProductName) " _
                                                    & "VALUES (@ProductName)"

                Dim cmd_product As New OleDbCommand(sqlstring_product, con)
                cmd_product.CommandType = CommandType.Text
                cmd_product.Parameters.AddWithValue("@ProductName", Strings.Trim(txProductNameManual.Text))

                cmd_product.ExecuteNonQuery()
                cmd_product.Parameters.Clear()

                Dim cmd As New OleDb.OleDbCommand("SELECT DISTINCT * FROM [Products] ORDER BY ProductName ", con)

                Dim ddlProducts As DropDownList = CType(GridView1.Rows(RowIndex).Cells(13).FindControl("ddlProducts"), DropDownList)

                Dim da As New OleDbDataAdapter(cmd)

                Dim ds As New DataSet()
                da.Fill(ds)

                ddlProducts.DataTextField = ds.Tables(0).Columns("ProductName").ToString()
                ddlProducts.DataValueField = ds.Tables(0).Columns("ProductID").ToString()

                ddlProducts.DataSource = ds.Tables(0)
                ddlProducts.DataBind()

                ds.Dispose()

Open in new window

0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
this video summaries big data hadoop online training demo (http://onlineitguru.com/big-data-hadoop-online-training-placement.html) , and covers basics in big data hadoop .
Integration Management Part 2
Suggested Courses

972 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question