Quantcast
Channel: ASP.NET AJAX + Ajax Control Toolkit (ACT)
Viewing all articles
Browse latest Browse all 5678

Stop AutoPostback on Gridview cell click when ModelPopUpExtender opens

$
0
0

I have a a Gridview which displays records (training) of various individuals! When you click on the various cells an AJAX ModelPopUpextender opens showing further details relating to that particular training sets!

The problem I'm having is that when I click on any of the GridView cells and the ModelPopUp opens the Gridview PostsBack. Id like to be able to click on any cell and get the same functinality without the Gridview posting back?

<asp:GridView ID="GridView1" runat="server" CssClass="rounded-corner" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand" DataKeyNames="setName" AutoGenerateColumns="true" ><Columns>  <asp:buttonfield commandname="CellClick" runat="server" visible="false"></asp:buttonfield>   </Columns></asp:GridView><asp:Button runat="server" ID="btnShowModalPopup" Style="display: none" /><ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnShowModalPopup"
                PopupControlID="divPopUp" PopupDragHandleControlID="panelDragHandle" DropShadow="False" /><br /><div class="popUpStyle2" id="divPopUp" style="display: none;"><asp:Panel runat="Server" ID="panelDragHandle" CssClass="drag">
                    Hold here to Drag this Box</asp:Panel><asp:DetailsView ID="DetailsView1" runat="server" Height="100%" Width="220px" BorderStyle="None" DefaultMode="ReadOnly" GridLines="None" AutoGenerateRows="false"  ><Fields><asp:TemplateField HeaderText="ID:" HeaderStyle-Font-Bold="true"  ItemStyle-VerticalAlign="Top"><ItemTemplate><asp:Label ID="lblTrainingId" runat="server" Text='<%# Bind("tt_id") %>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Set Name:" HeaderStyle-Font-Bold="true" ItemStyle-VerticalAlign="Top"><ItemTemplate><asp:Label ID="lblSetName" runat="server" Text='<%# Bind("setName") %>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Date:" HeaderStyle-Font-Bold="true" ItemStyle-VerticalAlign="Top"><ItemTemplate><asp:Label ID="lblTDate" runat="server" Text='<%# Bind("t_date", "{0:dd/MM/yy}") %>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Surname:" HeaderStyle-Font-Bold="true" ItemStyle-VerticalAlign="Top"><ItemTemplate><asp:Label ID="lblSurname" runat="server" Text='<%# Bind("surname") %>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Outcome:" HeaderStyle-Font-Bold="true" ItemStyle-VerticalAlign="Top"><ItemTemplate><%--<asp:Label ID="lblOutcome" runat="server" Text='<%# Bind("o_id") %>'></asp:Label>--%><asp:Image ID="imgStatus" runat="server" ImageUrl='<%# GetImage(CType(Eval("o_id"),Integer)) %>'  /></ItemTemplate></asp:TemplateField></Fields></asp:DetailsView><asp:Button ID="btnClose" runat="server" Text="Close" /><br /></div>
 Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
        For Each r As GridViewRow In GridView1.Rows
            If r.RowType = DataControlRowType.DataRow Then
                For columnIndex As Integer = 0 To r.Cells.Count - 1
                    Page.ClientScript.RegisterForEventValidation(r.UniqueID + "$ctl00", columnIndex.ToString())
                Next
            End If
        Next
        MyBase.Render(writer)
    End Sub

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim _singleClickButton As LinkButton = DirectCast(e.Row.Cells(0).Controls(0), LinkButton)
            Dim _jsSingle As String = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "")
            ' Add events to each editable cell
            For columnIndex As Integer = 2 To e.Row.Cells.Count - 1
                ' Add the column index as the event argument parameter
                Dim js As String = _jsSingle.Insert(_jsSingle.Length - 2, columnIndex.ToString())
                ' Add this javascript to the onclick Attribute of the cell
                e.Row.Cells(columnIndex).Attributes("onclick") = js
                ' Add a cursor style to the cells
                e.Row.Cells(columnIndex).Attributes("style") += "cursor:pointer;cursor:hand;"
            Next
        End If
    End Sub

    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
        If e.CommandName.ToString() = "CellClick" Then
            Dim selectedRowIndex As Integer = Convert.ToInt32(e.CommandArgument.ToString())
            Dim selectedColumnIndex As Integer = Convert.ToInt32(Request.Form("__EVENTARGUMENT").ToString())
            Dim ServiceNo As String = GridView1.HeaderRow.Cells(selectedColumnIndex).Text.Remove(4)
            Dim TrainingId As String = GridView1.Rows(selectedRowIndex).Cells(selectedColumnIndex).Text.Remove(0, 1)

            If TrainingId = "nbsp;" Or TrainingId = String.Empty Then
            Else
                ModalPopupExtender1.Show()
                'Get the Distinct users in the roles nlAdmin and nlUser
                Dim strQuery As String = "SELECT string goes here)"
                Dim cmd As New SqlCommand(strQuery)
                cmd.Parameters.AddWithValue("@tt_id", TrainingId.ToString)
                Dim dt As DataTable = GetData(cmd)

                DetailsView1.DataSource = dt
                DetailsView1.DataBind()
            End If
        End If
    End Sub




Viewing all articles
Browse latest Browse all 5678

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>