1 - 是否可以处理通过java脚本或页面中的其他方式动态生成的控件?
2-如果我TextBox
中有UpdatePanel
,那么查找控制的机制是什么?
例如,我如何获得已添加到表中的控件(textBox)的值:
for (int i = 0; i < rowsCount; i++)
{
TableRow row = new TableRow();
for (int j = 0; j < colsCount; j++)
{
TableCell cell = new TableCell();
TextBox tb = new TextBox();
tb.ID = "txtSabeghe_" + (i + 1) + "Col_" + (j + 1);
cell.Controls.Add(tb);
row.Cells.Add(cell);
}
Table5.Rows.Add(row);
}
功能表和按钮都在更新面板中以避免回发
答案 0 :(得分:2)
你的问题太笼统了,但我会尽力根据我的想法和#34;做出回答。你在问。
是的,所有.net控件都在DOM中呈现为HTML,因此您可以像处理DOM元素一样处理它们,除了.net使用id
属性中的额外内容呈现DOM,即< strong> ctl_001 _ 等,因此您需要使用ClientID
属性。您当然可以在web.config as this article shows中将ClientIDMode
设置为Static
,这将保留您指定的ID。
<asp:TextBox runat="server" id="mytextbox" />
你的剧本。
// without ClientIDMode = 'Static'
var element = document.getElementById('<%=mytextbox.ClientID%>');
// with ClientIDMode = 'Static'
var element = document.getElementById('mytextbox');
Control.FindControl
是服务器端方法(Control
基类),它接受您要查找的控件的ID(作为字符串),可以按如下方式使用
<asp:Panel runat="server" id="mypanel">
<asp:TextBox runat="server" id="mytextbox" />
</asp:Panel>
在您的代码中。
TextBox tbx = mypanel.FindControl("mytextbox");
编辑 - 使用母版页查找控件
如果您想使用母版页找到您的控件,那么您最好通过父母进行过滤。
// parent place holder in master page
ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolderID");
// parent panel in content place holder
UpdatePanel pnl = cph.FindControl("UpdatePanelID");
// child of parent that you're interested in
TextBox tbx = pnl.FindControl("TextBoxID");