Findcontrol和客户端对象

时间:2012-09-24 09:14:28

标签: asp.net updatepanel

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

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

1 个答案:

答案 0 :(得分:2)

你的问题太笼统了,但我会尽力根据我的想法和#34;做出回答。你在问。

  1. 是的,所有.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');
    
  2. Control.FindControl是服务器端方法(Control基类),它接受您要查找的控件的ID(作为字符串),可以按如下方式使用

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

    在您的代码中。

    TextBox tbx = mypanel.FindControl("mytextbox");
    
  3. 编辑 - 使用母版页查找控件

    如果您想使用母版页找到您的控件,那么您最好通过父母进行过滤。

    // 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");