如何将gridview templatefield设置为modalpopupextender的目标控件?

时间:2011-12-27 11:03:49

标签: c# asp.net ajax asp.net-ajax

有没有办法将控件(在gridview的模板字段中)设置为模态弹出扩展器的目标控件?我试着这样:

Full postback triggered by LinkButton inside GridView inside UpdatePanel

但是我得到一个例外,因为value参数不能为null。请详细说明。

网格:

<asp:GridView ID="grdTemp" runat="server" AllowPaging="True" AllowSorting="True"
                      DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="TempNo" OnRowCommand="grdDULead_RowCommand" OnRowDataBound="grdDULead_RowDataBound">
   <FooterStyle BackColor="White" CssClass="GridFooter" />
   <Columns>
   <asp:TemplateField><ItemTemplate><asp:LinkButton ID="grDULeadlnkSelect" runat="server" ForeColor="Red" OnClick="grDULeadlnkSelect_Click" CausesValidation="False" CommandName="selectrow">select</asp:LinkButton></ItemTemplate>
</asp:GridView>

扩展器:

<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="grDULeadlnkSelect" PopupControlID="pnlCDAMTClar" BackgroundCssClass="modalBackground">
</cc1:ModalPopupExtender>

代码隐藏: 一开始我收到错误could not find control "grDULeadlnkSelect"。然后我尝试注册按钮,但我收到错误value cannot be null

protected void grdTemp_RowDataBound(object sender, GridViewRowEventArgs e)
{     // getting err at below line.
     LinkButton lb = e.Row.FindControl("grDULeadlnkSelect") as  LinkButton; 
    ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb); 
}

1 个答案:

答案 0 :(得分:0)

你可以做的只是为ModalPopUpExtender设置一个虚拟控件ID作为TargetControlID,并使该虚拟控件不可见。

现在在GridView的RowCommand事件上写:

ModalPopupExtender1.Show();

希望这能解决您的问题。