javascript - Jquery/Javascript : How can I get ClientID for dynamically generated controls

标签 javascript c# jquery asp.net

如何获取使用 javascript/jquery 动态创建的控件的客户端 ID。

我有一个日期选择器,如果值发生变化,它应该触发一个 textchanged 事件并执行一些功能。下面是我的脚本

function BindControlEvents() {
    $(".datepicker").datepicker({
        format: 'mm/dd/yyyy',
        autoclose: true,
        todayBtn: 'linked'
    }).on('changeDate', function (ev) {
        __doPostBack('MainContent_dteFr1002', '');
    }).on('clearDate', function (ev) {
        //to do
    });
}

//Initial bind
    $(document).ready(function () {
        BindControlEvents();
    });

//Re-bind for callbacks
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function () {
        BindControlEvents();
    });

动态生成文本框日期选择器的代码隐藏

protected void Page_Init(object sender, EventArgs e)
{
      LoadControls(reportDefId);
}

protected void LoadControls(int reportDefId)
{
  HtmlTableCell cellDate = new HtmlTableCell();
  TextBox dte = new TextBox();
  dte.ToolTip = "If you need to filter for blank dates, please select date range 1/1/1753-1/1/1753";
  dte.Attributes.Add("type", "text");
  dte.Attributes.Add("class", "datepicker");
  if (rfl.fieldDisplayName.Contains("Start") || rfl.fieldDisplayName.Contains("End"))
      dte.ID = "dte" + id.ToString();
  else
      dte.ID = "dteFr" + id.ToString();
  dte.Style["Width"] = "85px";
  dte.Style["Height"] = "24px";
  dte.TextChanged += new EventHandler(dte_TextChanged);
  cellDate.Controls.Add(dte);
}

为了测试,我对 ClientID“MainContent_dteFr1002”进行了硬编码,以查看它是否触发 textchnged 事件。确实如此。所以我需要动态传递包含 dte 的 cliendid 值。

我已经搜索过,但没有找到合适的答案。

请帮忙! 谢谢

最佳答案

您可以存储每个控件的ClientID以供以后在某个地方使用。

List<string> dynamicID = new List<string>();
dynamicID.Add(dte.ClientID);

或者给你的控件自定义ID并将ClientID模式设置为静态,这样它们就不会被aspnet重命名为MainContent_ID_5

dte.ID = "ID_" + index;
dte.ClientIDMode = ClientIDMode.Static;

或者沿着控件路径导航并找到正确的 ID,在此示例中,TextBox 作为第一个控件添加到 PlaceHolder1。

<%= PlaceHolder1.Controls[0].ClientID %>

关于javascript - Jquery/Javascript : How can I get ClientID for dynamically generated controls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377833/

相关文章:

c# - 使用 LINQ 将数据插入到使用序列作为主键生成器的表中

jquery - 使用 Javascript/Jquery 和 Json 数据填充选择框选项

javascript - 悬停时更改div颜色

c# - 在启动时选择列表中的第一个 ComboBox 项

javascript - 如何为 Force Network d3.js 中的节点组分配一致的颜色

c# - Entity Framework 查询无法使用 asp.net

javascript - 方法未定义

jquery - Vuejs 与 JQuery UI 可排序问题

javascript - 我无法理解这段代码(针对 React/Redux)是如何工作的

javascript - 使用正则表达式捕获特殊字符之间的字符串段