如何獲取使用javascript/jquery動態創建控件的客戶端ID。Jquery/Javascript:我如何獲得動態生成的控件的ClientID
我有一個日期選擇器,如果值改變,它應該觸發一個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();
});
代碼隱藏動態生成的文本框的DatePicker
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);
}
爲了測試,我已經硬編碼的客戶端ID「MainContent_dteFr1002」的,看它是否觸發textchnaged事件。它的確如此。所以我需要動態地傳遞cliendid值,其中cliendID包含dte。
我已經搜索,但我沒有找到合適的答案。
請幫忙! 謝謝
添加上面的行工作正常。但是,在ChangeDate上給_doPostBack添加另一個日期選擇器時,我每次更改/清除日期而不是關閉。如果我註釋掉_doPostBack,datepicker工作正常。但我應該做回發並調用textchanged方法。調用代碼隱藏方法的好方法是什麼?我如何修改? – crony
我有點困惑,然後需要從你的代碼中看到更多的代碼。每次你調用_doPostBack時,它會創建一個新的日期選擇器?你想要的是那種行爲嗎?該代碼片段是否在位於PageLoad()中的代碼中創建日期選擇器?如果這是帶有Page.IsPostBack的回傳,您可以檢查後面的代碼,如果它是PostBack,則可以有條件地說不要創建另一個日期選擇器。在頁面加載的服務端,你可以用這樣的代碼來獲取回發參數以及字符串參數= Request [「__ EVENTARGUMENT」]; –
是的,它創建了一個新的日期選擇器。我不需要這種行爲。我已經添加了datepicker文本框控件的代碼。請找到並請建議!謝謝 – crony