user2768263
user2768263

Reputation: 11

open a ajax modelpopup on gridview link button

I am trying to open a ModalPopup on GridView LinkButton, but when I am giving LinkButton ID to targetcontrolid of pop up, it is not accepting. Please help me.

<asp:GridView ID="grdView" runat="server" AutoGenerateColumns="False" CellPadding="0"
            ForeColor="#333333" GridLines="None" onrowdatabound="grdView_RowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Dr. Photo">
            <ItemTemplate>
                <asp:Image ID="Image1" runat="server" Style="height: 80px; width: 100px;" ImageUrl='<%#  String.Format("~/Upload/Docters/" + Eval("ImgName")) %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150px" >
        <ItemStyle Width="150px"></ItemStyle>
        </asp:BoundField>

        <asp:BoundField DataField="Qualification" HeaderText="Qualification"
            ItemStyle-Width="50px" >
        <ItemStyle Width="50px"></ItemStyle>
        </asp:BoundField>
        <asp:TemplateField HeaderText="Click to Contact">
        <ItemTemplate>
        <asp:LinkButton ID="popup" runat="server" Text="Click to Contact"></asp:LinkButton>
        </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

<ajaxToolKit:ModalPopupExtender id="ModalPopupExtender1" runat="server"
    cancelcontrolid="btncancel" okcontrolid="btnSend"
    targetcontrolid="Button1" popupcontrolid="Panel1"
    popupdraghandlecontrolid="PopupHeader" drag="true" backgroundcssclass="ModalPopupBG">
</ajaxToolKit:ModalPopupExtender

Upvotes: 1

Views: 11330

Answers (3)

milan m
milan m

Reputation: 2254

I think the simplest solution to this problem is to see the generated HTML output of the webpage and find out the exact rendered id of the Button control.

Once that is found simply replace the id in the following code with the generated id.

<ajaxToolKit:ModalPopupExtender id="ModalPopupExtender1" runat="server"
cancelcontrolid="btncancel" okcontrolid="btnSend"
targetcontrolid="Button1" popupcontrolid="Panel1"
popupdraghandlecontrolid="PopupHeader" drag="true" backgroundcssclass="ModalPopupBG">

Most of the time the asp.net engine replaces the control id with its own ids. So your
targetcontrolid ="Button1" may not be firing.

Another way to resolve this issue is by replacing the code as follows:

Replace the following with:

 targetcontrolid ="Button1"

this

targetcontrolid ='<%=Button1.ClientID%>'

Upvotes: 0

Bhagavan
Bhagavan

Reputation: 301

I am placing my code It will work

<asp:GridView ID="gvproducts" runat="server" DataKeyNames="sno,"  AutoGenerateColumns="false"  
OnRowCommand="gvproducts_RowCommand" OnPageIndexChanging="gvproducts_PageIndexChanging"
AllowPaging="true" PageSize="10" EmptyDataText="No Record Found" Width="100%"
BorderColor="#BDBDBD" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White" >
<Columns>
 <asp:TemplateField HeaderText="SNo" FooterStyle-HorizontalAlign="Center">
      <ItemTemplate>
            <span>
                <%#Container.DataItemIndex + 1%>
              </span>
        </ItemTemplate>
       </asp:TemplateField>
     <asp:BoundField DataField="indentid" HeaderText="Indent ID"></asp:BoundField>
     <asp:BoundField DataField="productid" HeaderText="Product ID" ></asp:BoundField>
      asp:BoundField DataField="productname" HeaderText="Product Name" ></asp:BoundField>
      <asp:BoundField DataField="quantity" HeaderText="Quantity"  ></asp:BoundField>
      <asp:BoundField DataField="unit" HeaderText="Unit" ></asp:BoundField>
       asp:BoundField DataField="requestby" HeaderText="Request By"></asp:BoundField>
      <asp:TemplateField HeaderText="Purchase" ItemStyle-HorizontalAlign="Center">
         ItemTemplate>
          <asp:LinkButton ID="lnkPurchase" runat="server" CommandName="Purchase" CommandArgument="<%#Container.DataItemIndex%>"
            ext="Purchase" ForeColor="blue">
             </asp:LinkButton>
               </ItemTemplate>
                /asp:TemplateField>
                 </Columns>
                </asp:GridView> 

//Modal Popup

<input id="Hid_Sno" type="hidden" name="hddclick" runat="server" />
<ajaxToolkit:ModalPopupExtender ID="MPEPurchase" runat="server" TargetControlID="Hid_Sno"
            PopupControlID="pnlpurchase" RepositionMode="RepositionOnWindowResizeAndScroll"
            BackgroundCssClass="modalBackground" CancelControlID="btnxcancel" PopupDragHandleControlID="pnlpurchase" />

.CS

protected void gvproducts_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.ToUpper() == "PURCHASE")
    {
        MPEPurchase.Show();
    }
}   

Upvotes: 6

Ram Singh
Ram Singh

Reputation: 6938

You have to use GridView's RowDataBound Event for this as "any control inside the grid is not directly accessible". so you need to find the control in gridview's rowdatabound and then set "targetcontrolid" of Ajaxmodalpopup extender.

Upvotes: 0

Related Questions