Events of child gridview are not executed

G

Guest

I have a perent gridview which includes in a template field a child gridview.
Child gridview includes command buttons for opening different windows based
on its row selected.

I used the code below. The event for RowDataBound is executed, rows get
different color, but event for RowCommand is not executed. What could be the
problem ?

Thanks a lot in advance.

<asp:GridView ID="grv_batches" runat="server"
AutoGenerateColumns="False" DataKeyNames="country_no,product_no,client_no"
CssClass="GridView" >
<Columns>
<asp:ButtonField CommandName="Send" Text="Finish" >
<ControlStyle CssClass="GridView_LinkButtons" />
</asp:ButtonField>
<asp:BoundField DataField="Country_name" HeaderText="Country" />
<asp:BoundField DataField="product_name" HeaderText="Product" />
<asp:BoundField DataField="client_name" HeaderText="Company" />
<asp:TemplateField HeaderText="Details">
<ItemTemplate>
<asp:GridView ID="grv_reports" runat="server"
AutoGenerateColumns="False" CssClass="GridView"
OnRowCommand="grv_subscr_reports_RowCommand"
OnRowDataBound="grv_subscr_reports_RowDataBound">
<Columns>
<asp:ButtonField CommandName="Sub" Text="S">
<ControlStyle
CssClass="GridView_LinkButtons" />
</asp:ButtonField>

Protected Sub grv_subscr_reports_RowCommand(ByVal sender As Object, ByVal
e As System.Web.UI.WebControls.GridViewCommandEventArgs)
If e.CommandName = "Sub" Then

Protected Sub grv_subscr_reports_RowDataBound(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Select Case e.Row.Cells(11).Text 'report status
Case "New"
e.Row.BackColor = Drawing.Color.LightGreen
 
G

Guest

Show us how you bind the data. I suspect the data for internal data grid is
being
re-bound on every postback so rowcommand event won't be raised.
 
G

Guest

Thanks Milosz for your message.

Here is the code:

My parent gridview is binded in btn_show button, because user select the
countries, products, clients for showing the data in parent gridview which
then refreshes the child gridview.

Protected Sub btn_show_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btn_show.Click


refresh_gridview_data()


End Sub


Protected Sub refresh_gridview_data()


Dim sdsc As New SqlDataSource
Dim var_SQL As String


'--------------------------------------------------------------------------­----------------------------------------------------------


sdsc.ConnectionString =
ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionStrin­g
sdsc.DataSourceMode = SqlDataSourceMode.DataReader


var_SQL = "SELECT DISTINCT dbo.Report.country_no,
dbo.Report.product_no, dbo.Report.client_no, "


sdsc.SelectCommand = var_SQL


grv_batches.DataSource = sdsc
grv_batches.DataBind()


End Sub


Protected Sub grv_batches_RowCreated(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewRowEventArgs) Handles
grv_batches.RowCreated
If e.Row.RowType = DataControlRowType.DataRow Then
Dim sdsc As New SqlDataSource
Dim grv_rep As GridView = e.Row.FindControl("grv_reports")


sdsc.ConnectionString =
ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionStrin­g


sdsc.SelectCommandType =
SqlDataSourceCommandType.StoredProcedure
sdsc.SelectCommand = "STP_slct_Reports"


sdsc.SelectParameters.Add("country_no",
grv_batches.DataKeys(e.Row.RowIndex).Values("country_no"))
sdsc.SelectParameters.Add("product_no",
grv_batches.DataKeys(e.Row.RowIndex).Values("product_no"))
sdsc.SelectParameters.Add("client_no",
grv_batches.DataKeys(e.Row.RowIndex).Values("client_no"))


grv_rep.DataSource = sdsc
grv_rep.DataBind()
End If


Protected Sub grv_subscr_reports_RowCommand(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
If e.CommandName = "Report" Then
'one_all = 1 'one report will be edited
If (Not
Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "Report"))
Then 'Check to see if the startup script is already registered.
Page.ClientScript.RegisterStartupScript(Me.GetType(),
"Report", "window.open('Report.aspx',
'','dialogHeight=850px,Width=800px,menubar=No,toolbar=no,scrollbars=yes');
", True)
End If
End If
End Sub


Protected Sub grv_subscr_reports_RowDataBound(ByVal sender As
Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Select Case e.Row.Cells(11).Text 'report status
Case "Cancelled"
e.Row.BackColor = Drawing.Color.OrangeRed
Case "On-Hold"
e.Row.BackColor = Drawing.Color.Orange
Case "Finished"
e.Row.BackColor = Drawing.Color.LightSteelBlue
Case "New"
e.Row.BackColor = Drawing.Color.LightGreen
End Select
End If
End Sub


<asp:GridView ID="grv_batches" runat="server"
AutoGenerateColumns="False"
DataKeyNames="country_no,product_no,client_no" CssClass="GridView" >
<Columns>
<asp:ButtonField CommandName="Finish" Text="Finish" >
<ControlStyle CssClass="GridView_LinkButtons" />
</asp:ButtonField>
<asp:BoundField DataField="Country_name"
HeaderText="Country" />
<asp:BoundField DataField="product_name"
HeaderText="Product" />
<asp:BoundField DataField="client_name"
HeaderText="Company" />
<asp:BoundField DataField="status_name"
HeaderText="Status" />
<asp:BoundField HeaderText="Finish Status" />
<asp:TemplateField HeaderText="Subs">
<ItemTemplate>
<asp:GridView ID="grv_reports" runat="server"
AutoGenerateColumns="False" CssClass="GridView"
OnRowCommand="grv_subscr_reports_RowCommand"
OnRowDataBound="grv_subscr_reports_RowDataBound">
<Columns>
<asp:ButtonField CommandName="Sub"
Text="S">
<ControlStyle
CssClass="GridView_LinkButtons" />
</asp:ButtonField>
<asp:ButtonField CommandName="Report"
Text="R">
<ControlStyle
CssClass="GridView_LinkButtons" />
</asp:ButtonField>
<asp:ButtonField CommandName="History"
Text="H">
<ControlStyle
CssClass="GridView_LinkButtons" />
</asp:ButtonField>
<asp:BoundField DataField="note"
HeaderText="N">
<ItemStyle Font-Bold="True"
ForeColor="Red" HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="company_name"
HeaderText="Company" />
<asp:BoundField DataField="full_name"
HeaderText="User" />
<asp:BoundField
DataField="proc_deliverable_name" HeaderText="Deliverable" />
<asp:BoundField
DataField="report_deadline" HeaderText="Deadline" />
<asp:BoundField
DataField="report_finished" HeaderText="Finish" />
<asp:BoundField DataField="delay"
HeaderText="Delay">
<ItemStyle ForeColor="Red" />
</asp:BoundField>
<asp:BoundField
DataField="report_importance_short_name" HeaderText="Imp" />
<asp:BoundField
DataField="report_status_name" HeaderText="Report Status" />
<asp:BoundField
DataField="sub_status_name" HeaderText="Sub. Status" />
<asp:BoundField DataField="date_activated"
HeaderText="Date Activated" />
<asp:BoundField DataField="sub_no"
HeaderText="sub_no" Visible="False" />
<asp:BoundField DataField="sub_detail_no"
HeaderText="sub_detail_no"
Visible="False" />
<asp:BoundField DataField="report_no"
HeaderText="report_no" Visible="False" />
</Columns>
<RowStyle CssClass="GridView_Row" />
<HeaderStyle CssClass="GridView_Header2" Font-
Size="XX-Small" />
<AlternatingRowStyle
CssClass="GridView_AlternateRow" />
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyle CssClass="GridView_Row" />
<HeaderStyle CssClass="GridView_Header" />
<AlternatingRowStyle CssClass="GridView_AlternateRow" />
</asp:GridView>
 
G

Guest

Hi there again,

You're re-binding internal gridview on every postback inside rowcreated
event. Move internal grid data binding to rowdatabound event and everything
will be OK:

Protected Sub grv_batches_RowDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewRowEventArgs) Handles
grv_batches.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim sdsc As New SqlDataSource
Dim grv_rep As GridView = e.Row.FindControl("grv_reports")


sdsc.ConnectionString =
ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionStringsdsc.SelectCommandType =
SqlDataSourceCommandType.StoredProcedure()
sdsc.SelectCommand = "STP_slct_Reports"


sdsc.SelectParameters.Add("country_no",
grv_batches.DataKeys(e.Row.RowIndex).Values("country_no"))
sdsc.SelectParameters.Add("product_no",
grv_batches.DataKeys(e.Row.RowIndex).Values("product_no"))
sdsc.SelectParameters.Add("client_no",
grv_batches.DataKeys(e.Row.RowIndex).Values("client_no"))

grv_rep.DataSource = sdsc
grv_rep.DataBind()
End If
End Sub


Hope it helps
 

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

No members online now.

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,812
Latest member
GracielaWa

Latest Threads

Top