Events of child gridview are not executed

Discussion in 'ASP .Net' started by =?Utf-8?B?Y2hyaXM=?=, Feb 16, 2007.

  1. 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
     
    =?Utf-8?B?Y2hyaXM=?=, Feb 16, 2007
    #1
    1. Advertising

  2. 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.
    --
    Milosz


    "chris" wrote:

    > 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
    >
     
    =?Utf-8?B?TWlsb3N6IFNrYWxlY2tpIFtNQ0FEXQ==?=, Feb 16, 2007
    #2
    1. Advertising

  3. 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>
     
    =?Utf-8?B?Y2hyaXM=?=, Feb 16, 2007
    #3
  4. 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
    --
    Milosz


    "chris" wrote:

    > 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>
    >
    >
    >
    >
     
    =?Utf-8?B?TWlsb3N6IFNrYWxlY2tpIFtNQ0FEXQ==?=, Feb 16, 2007
    #4
  5. Thanks a lot Milosz, this was the problem!!
     
    =?Utf-8?B?Y2hyaXM=?=, Feb 20, 2007
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Luigi
    Replies:
    2
    Views:
    519
    Eliyahu Goldin
    May 22, 2006
  2. Jeff Rodriguez
    Replies:
    23
    Views:
    1,132
    David Schwartz
    Dec 9, 2003
  3. chris
    Replies:
    4
    Views:
    478
    chris
    Feb 16, 2007
  4. AAaron123
    Replies:
    2
    Views:
    354
    AAaron123
    Feb 11, 2009
  5. Chris

    Events Events Events Please Help

    Chris, Aug 30, 2005, in forum: ASP .Net Web Controls
    Replies:
    0
    Views:
    373
    Chris
    Aug 30, 2005
Loading...

Share This Page