如何在asp modalpopup中引用动态字段的值

时间:2015-04-28 01:18:38

标签: c# asp.net ajax dynamic modalpopupextender

我有一个modalpopup扩展程序,当用户点击“添加”时会显示该扩展程序。按钮。我可以在弹出窗口上创建一个动态文本框。

我的问题是我无法在代码隐藏中获得对该文本框的引用。

我添加了一个' textchanged'文本框的事件处理程序,但由于它需要AutoPostBack = true(我认为),modalpopup在我的事件触发之前被销毁!即使我重新显示modalpopup,动态字段现在已经消失了。

这是modalpopup的ASP:

<asp:ModalPopupExtender ID="PayDetail_ModalPopupExtender" runat="server" PopupControlID="PayDetailPopupPanel" TargetControlID="btnShowDetailPopup"
                    CancelControlID="btnClosePayDetail" BackgroundCssClass="modalBackground">
 </asp:ModalPopupExtender>

 <asp:Button ID="btnShowDetailPopup" runat="server" style="display:none" />
 <asp:Panel ID="PayDetailPopupPanel" runat="server" CssClass="modalPayPopup" align="center" style = "display:none">
                        <asp:table id="addClaimDetailTable" runat="server" class="table" >
                            <asp:TableRow style="display:none">
                                <asp:TableCell >
                                    <asp:Label ID="lblPayHeaderID" runat="server" Text="Pay Header ID:"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell >

                                    <asp:TextBox ID="txtPayHeaderID" runat="server" Enabled="false"></asp:TextBox>
                                </asp:TableCell>
                            </asp:TableRow>
                        </asp:table>
 </asp:Panel>

我在代码隐藏中创建一个动态文本框,如下所示:

        //add dynamic fields
        TableRow tRow = new TableRow(); //row
        TableCell hCell = new TableCell(); //header
        TableCell dCell = new TableCell(); //data

        Label lblHeader = new Label();
        lblHeader.ID = "lblMedicare";
        lblHeader.Text = "Medicare:";
        TextBox txtData = new TextBox();
        txtData.ID = "txtMedicare";
        txtData.Text = "";
        txtData.TextChanged += new EventHandler(txtData_TextChanged);
        txtData.AutoPostBack = true;
        //and add to LIST
        PayDetailDynamicList.Add(txtData);
        //myValue = txtData.ID;


        hCell.Controls.Add(lblHeader);
        dCell.Controls.Add(txtData);
        tRow.Controls.Add(hCell);
        tRow.Controls.Add(dCell);

        addClaimDetailTable.Controls.Add(tRow);

我将文本框存储在静态列表中:

     static List<TextBox> PayDetailDynamicList = new List<TextBox>();

以下是eventhandler的代码隐藏:

    void txtData_TextChanged(object sender, EventArgs e)
    {
        TextBox t = sender as TextBox;

        if (t == null)
            throw new ArgumentException("sender not a textbox", "sender");

        //add value to list?
        string value = t.Text;
        string id = t.ID;
    }

我的问题是:如何进入eventhandler来存储用户输入的数据?或者我如何获得对此动态文本框的引用,以便我可以检索该值?

有更好的方法吗?使用我的modalpopup表单?如果我知道jquery和ajax我可以用那种方式做动态字段,但我不会......

任何帮助表示赞赏!如果您需要更多详细信息,请告诉我们!谢谢!

1 个答案:

答案 0 :(得分:0)

在你的情况下

TextBox MyTextBox = PayDetail_ModalPopupExtender.FindControl("txtMedicare") as TextBox;

以下是有关Control.FindControl的信息 https://msdn.microsoft.com/en-us/library/486wc64h(v=vs.110).aspx