【问题标题】:How to set gridview template field as target control for modal popup extender?如何将 gridview 模板字段设置为模态弹出扩展器的目标控件?
【发布时间】:2012-01-28 11:00:15
【问题描述】:

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

Full postback triggered by LinkButton inside GridView inside UpdatePanel

但我得到一个异常,因为 value 参数不能为空。请详细帮忙。

网格:

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

【问题讨论】:

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


【解决方案1】:

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

现在在该 GridView 的 RowCommand 事件上写入:

ModalPopupExtender1.Show();

希望这能解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多