我有一个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我可以用那种方式做动态字段,但我不会......
任何帮助表示赞赏!如果您需要更多详细信息,请告诉我们!谢谢!
答案 0 :(得分:0)
在你的情况下
TextBox MyTextBox = PayDetail_ModalPopupExtender.FindControl("txtMedicare") as TextBox;
以下是有关Control.FindControl的信息 https://msdn.microsoft.com/en-us/library/486wc64h(v=vs.110).aspx