在gridview链接按钮上打开ajax modelpopup

时间:2013-09-24 06:33:13

标签: c# asp.net ajax

我正在尝试在GridView LinkBut​​ton上打开一个ModalPopup,但是当我将LinkBut​​ton ID提供给弹出的targetcontrolid时,它不接受。 请帮帮我。

<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

3 个答案:

答案 0 :(得分:6)

我正在放置我的代码它会起作用

<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> 

//模态弹出

<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();
    }
}   

答案 1 :(得分:0)

你必须使用GridView的RowDataBound事件,因为“网格中的任何控件都不能直接访问”。所以你需要在gridview的rowdatabound中找到控件,然后设置Ajaxmodalpopup扩展器的“targetcontrolid”。

答案 2 :(得分:0)

我认为这个问题最简单的解决方案是查看生成的网页HTML输出,并找出Button控件的确切呈现ID。

找到后,只需使用生成的id替换以下代码中的id。

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

大多数情况下,asp.net引擎用自己的id替换控件ID。所以你的
targetcontrolid =“Button1”可能没有被解雇。

解决此问题的另一种方法是更换代码,如下所示:

将以下内容替换为:

 targetcontrolid ="Button1"

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