Gridview row databound event - can't get past the 1st row of gridview

M

maurban

Hi there experts,
I have a gridview with a couple textboxes and a dropdownlist. I'm
trying to insert a default value into my database driven dropdownlist.

I'm doing this in the rowdatabound event. My problem is that my code
only works for the very first row in the gridview. For the first row,
when I press "edit", my gridview goes to edit mode, my textboxes and
dropdownlist populate. Further, my dropdownlist has the "Select" I
forced in as its default value.

If I try the 2nd row in my gridview, the dropdownlist populates,
however doesn't trigger the row databound command of inserting a
default value.

I tried going the "for each gridview row approach", and that just loops
for the number of rows I have. If I have two rows, it inserts the
default value "Select" twice in the dropdownlist for the first row
only. It still doesn't recognize any other row.

---- ASPX snippet ----
<EditItemTemplate>
<asp:dropdownlist ID="ddlUpdate_UserTypeID"
datavaluefield="user_type_id" datatextfield="user_type_desc"
DataSource='<%# Bind_ddlUserType() %>' Runat="server" />
</EditItemTemplate>

---- Code Behind snippet----
Sub gvUsers_rowDataBound(ByVal sender As Object, ByVal e As
GridViewRowEventArgs) _
Handles gvUsers.RowDataBound

If e.Row.RowType = DataControlRowType.DataRow And _
e.Row.RowState = DataControlRowState.Edit Then
Dim user_id As String = e.Row.Cells(0).Text
CType(e.Row.FindControl("ddlUpdate_UserTypeID"),
DropDownList).Items.Insert(0, New ListItem("Select"))
End If

Please let me know if you require more detail. I've been spinning my
wheels on this for sometime now.

Thanks much for any assistance!

Mike
 
S

Superman

Maurban,

I would switch out of RowDataBound mode and use the RowCreated
method...when switching between EditItemIndex values, the data is not
re-bound therefore your RowDataBound event will not fire. Here's what
my solution would be:

1) Leave all your databound code intact, and add an additional event
handler to the gridview for "RowCreated".

2) Insert the following code (c#)

if(e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList list =
(DropDownList)e.Row.Cells[x].FindControl("myDropDown");
myList.Items.Insert(0, new ListItem("defaultValue", "Select"));
}

Let us know how it goes!

-Brenton
 
S

Superman

Maurban,

I just thought of something else.

You have your datasource being bound to a function call. Be sure it
doesn't bind over every post. Make sure that function checks for
Page.IsPostBack.

Good luck.

-Brenton
 
M

maurban

Well, this is still a no-go... Adding this code to the rowcreated event
has no effect on the gridview.

My original code is works for the first row of the gridview. I think I
just need to figure out how to make it acknowlege rows 2 +.

When I click the edit button for rows 2 +, there is no effect on the
rowdatabound event (or rowcreated event)

Any other ideas?

Thanks!
 
M

maurban

I figured out the solution:

If ((e.Row.RowState = (DataControlRowState.Edit Or _
DataControlRowState.Alternate)) Or _
(e.Row.RowState = DataControlRowState.Edit)) Then

bla bla

end if

Works great!! Hopefully this will help someone else out there.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,814
Latest member
SpicetreeDigital

Latest Threads

Top