By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,353 Members | 1,237 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,353 IT Pros & Developers. It's quick & easy.

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

P: n/a
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

Oct 12 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a
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
ma*****@gmail.com wrote:
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
Oct 12 '06 #2

P: n/a
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
ma*****@gmail.com wrote:
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
Oct 12 '06 #3

P: n/a
Brenton -- thanks sir, I'll give it a go and let you know.

Mike

Superman wrote:
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
ma*****@gmail.com wrote:
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
Oct 12 '06 #4

P: n/a
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!
ma*****@gmail.com wrote:
Brenton -- thanks sir, I'll give it a go and let you know.

Mike

Superman wrote:
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
ma*****@gmail.com wrote:
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
Oct 13 '06 #5

P: n/a
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.

ma*****@gmail.com wrote:
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!
ma*****@gmail.com wrote:
Brenton -- thanks sir, I'll give it a go and let you know.

Mike

Superman wrote:
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
>
>
ma*****@gmail.com wrote:
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
Oct 13 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.