0

1 - 是否可以处理通过java脚本或页面中的其他方式动态生成的控件?

2-找到控制的机制是什么,如果我有我TextBoxUpdatePanel

例如,我如何获取已添加到表中的控件(文本框)的值:

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

功能表和按钮都在更新面板中以避免回发

4

1 回答 1

2

你的问题太笼统了,但我会尽力根据我的“想法”回答你的问题。

  1. 是的,所有 .net 控件在 DOM 中呈现为 HTML,因此您可以像处理 DOM 元素一样处理它们,除了 .net 在id属性中呈现带有额外内容的 DOM,即ctl_001_等,因此您需要使用该ClientID属性。您当然可以在 web.config中设置ClientIDMode为,如本文所示,这将保留您指定的 ID。Static

    <asp:TextBox runat="server" id="mytextbox" />
    

    还有你的剧本。

    // without ClientIDMode = 'Static'
    var element = document.getElementById('<%=mytextbox.ClientID%>');
    
    // with ClientIDMode = 'Static'
    var element = document.getElementById('mytextbox');
    
  2. 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");
于 2012-09-24T09:25:37.080 回答