0

Hi I am using following code to display a grid on aspx

 <asp:GridView Caption="Search Results" ID="PhysicianGrid"
                        runat="server" EnableSortingAndPagingCallbacks="false" PageSize="5" Style="width: 100%"
                        PagerSettings-Visible="false" AutoGenerateColumns="false" CssClass="grid" RowStyle-CssClass="gridDataRow"
                        HeaderStyle-CssClass="headerRow" EnableViewState ="False">
                        <Columns>
                            <asp:TemplateField HeaderText="Select">
                                <HeaderStyle Width="70px" HorizontalAlign="Center" />
                                <ItemStyle HorizontalAlign="Center" />
                                <ItemTemplate>
                                    <asp:LinkButton ID="SelectedPhysician" runat="server" Text="Select" CommandName="SelectAffiliation" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField HeaderText="Physician ID" DataField="AMDM_Phys_ID" HeaderStyle-HorizontalAlign="Left"
                                ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="70px" ItemStyle-Width="70px" />
                        </Columns>
                    </asp:GridView>

and following is the row bound function for the above grid

Private Sub PhysicianGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles PhysicianGrid.RowDataBound


    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim selectLink As LinkButton = DirectCast(e.Row.FindControl("SelectedPhysician"), LinkButton)
        Dim physId As String = e.Row.Cells(1).Text
        If OperationType.Value.Equals("ADD ALLOCATION") Then
            selectLink.OnClientClick() = String.Format("DisplayUpdateAllocationDivFromSearch('{0}');", physId)
        Else
            'selectLink.OnClientClick() = String.Format("DisplayUpdateAllocationDivFromSearchNewPhy('{0}');", physId)
            selectLink.CommandArgument = physId
        End If
        selectLink.CommandArgument = physId
    End If
End Sub

when I am clicking on the select link the application gets postback and hitting the page_load function but on the click event handler

Private Sub PhysicianGrid_Command(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles PhysicianGrid.RowCommand
    If _requestView.CRTypeId = Resources.PageResources.CRTYPEAddNewPhysician AndAlso Request.Form("__EVENTTARGET").Contains("SelectedPhysician") AndAlso OperationType.Value.Equals("ADD NEW PHY") Then

        Dim selectedPhys As Integer = CInt(e.CommandArgument)
        Dim tempPhys As PhysicianView = New PhysicianView
        tempPhys.LoadSearchPhysician(Master.Environment, selectedPhys, True)
        Dim dt As ShipToDetailsDataSet.AMU_SHIPTO_ALLOCATION_VDataTable = New ShipToDetailsDataSet.AMU_SHIPTO_ALLOCATION_VDataTable
        If allocationOperation.Value.Equals("UPDATE") Then
            If GridSelectedShipToAllocations.Rows.Count > 0 Then
                For Each row As GridViewRow In GridSelectedShipToAllocations.Rows

                    Dim allocationString As String = DirectCast(row.FindControl("TextBoxNewAllocation"), TextBox).Text
                    SaveGridAllocationChangeForPostback(allocationString)
                    dt.AddAMU_SHIPTO_ALLOCATION_VRow(CInt(_shipToID), CInt(row.Cells(GridSelectedShipToAllocations_columns.colAMDM_PHYS_ID).Text), row.Cells(GridSelectedShipToAllocations_columns.colPhysician_Name).Text, Nothing, CDec(row.Cells(GridSelectedShipToAllocations_columns.colAllocation).Text.Substring(0, row.Cells(GridSelectedShipToAllocations_columns.colAllocation).Text.Length - 1)), CDate("01/01/2007"), Nothing, "", "", "", row.Cells(GridSelectedShipToAllocations_columns.colMajorSpec).Text.Replace("&nbsp;", ""), row.Cells(GridSelectedShipToAllocations_columns.colSecondarySpecialty).Text.Replace("&nbsp;", ""), row.Cells(GridSelectedShipToAllocations_columns.colTertiarySpecialty).Text.Replace("&nbsp;", ""), "", "", "", "")
                Next
            End If
            dt.AddAMU_SHIPTO_ALLOCATION_VRow(CInt(_shipToID), tempPhys.PhysicianID, String.Format("{0}, {1} {2}", tempPhys.LastName, tempPhys.FirstName, tempPhys.MiddleName), Nothing, 0, CDate("01/01/2007"), Nothing, tempPhys.StatusId, tempPhys.FirstName, tempPhys.LastName, tempPhys.MajorSpec, tempPhys.SECONDARY_SPECIALTY_LD, tempPhys.TERTIARY_SPECIALTY_LD, "", "", "", "")
            GridSelectedShipToAllocations.DataSource = dt
            GridSelectedShipToAllocations.DataBind()
            GridSelectedShipToAllocations.Style("display") = "block"
            'DivAddAllocationChange.Style("display") = "none"
            LabelTotal.Style("display") = "block"
            ScriptManager.RegisterStartupScript(Me.PhysicianGrid, GetType(Page), "hideSearchPhysDiv", "DisplayUpdateAllocationDivFromSearchNewPhy('" + selectedPhys.ToString + "');", True)

        End If

    End If

End Sub

how can I get it to hit the row command function

P.S. I need to use the EnableViewState ="False" attribute in the grid I cant remove this attribute. Is there any workaround to this issue?

haraman
  • 2,744
  • 2
  • 27
  • 50
  • Do you get any error, if yes then you should mention it also here. Have you tried the debug mode and check the values of CRTypeId, Request.Form("__EVENTTARGET").Contains("SelectedPhysician") and OperationType.Value? – haraman Oct 12 '15 at 10:59
  • nope I am not getting any error just I have written few lines of code that needs to be executed when user clicks on select link but clicking on select link is doing the post back but it is not hitting the row command (its event handler). – Shobhit Varshney Oct 13 '15 at 06:32
  • I am not sure but may be it is this code that is causing problem. Just a guess that OnClientClick and Command togather ... `selectLink.OnClientClick()`. – haraman Oct 13 '15 at 10:03

1 Answers1

0

This is how I achieved it in a recent project, may be it could help you find the problem. The command argument has been specified in the ASPX instead of RowDataBound event.
As a work around you may just comment out the code in your RowDataBound event and set CommandArgument in ASPX and check what happens.
Also I think instead of Request.Form("__EVENTTARGET").Contains("SelectedPhysician") you may try e.CommandName.Equals("SelectedPhysician")

ASPX:

<asp:GridView ID="gvStudents" runat="server" AutoGenerateColumns="false">
  <Columns>
    ...
    <asp:TemplateField>
      <ItemTemplate>
        <asp:LinkButton ID="BtnUnlock" runat="server" Text="Unlock" CausesValidation="True" CommandName="UnlockProfile" CommandArgument='<%# Eval("User_ID") %>' />
      </ItemTemplate>
    </asp:TemplateField>
    ...
  </Columns>
</asp:GridView>

CodeBehind:

Private Sub gvStudents_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvStudents.RowCommand
    If e.CommandName.Equals("UnlockProfile") Then
        Dim lnUser_ID As Integer = Convert.ToInt32(e.CommandArgument)
        ...
    ElseIf e.CommandName.Equals("LockProfile") Then
        ...
    End If
End Sub
haraman
  • 2,744
  • 2
  • 27
  • 50