我是Java Script的新手。我有一個帶有InsertItemTemplate和一些按鈕的aspx ListView。現在我需要訪問JavaScript中的insertitemtemplate按鈕來禁用它。這不起作用?如何從Java腳本的InsertItemTemplate中找到控件
document.getElementById('<%= Button1.ClientID%>')。disable = true;
請幫幫我。
我是Java Script的新手。我有一個帶有InsertItemTemplate和一些按鈕的aspx ListView。現在我需要訪問JavaScript中的insertitemtemplate按鈕來禁用它。這不起作用?如何從Java腳本的InsertItemTemplate中找到控件
document.getElementById('<%= Button1.ClientID%>')。disable = true;
請幫幫我。
解決方案1
您可以在後臺代碼,在那裏你可以訪問控件的屬性ClientID
爲ListView的每個項目的JavaScript代碼。例如,如果你在項目模板兩個按鈕,你想對btn1
點擊時禁用btn2
,你可以在ItemDataBound
事件上的客戶端代碼:
void lstView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.InsertItem)
{
Button btn1 = e.Item.FindControl("btn1") as Button;
Button btn2 = e.Item.FindControl("btn2") as Button;
btn1.OnClientClick = string.Format("var btn2 = document.getElementById('{0}'); btn2.disabled = true; return false;", btn2.ClientID);
}
}
解決方案2
如果您不能使用第一種方法,但可以修改標記,則可以爲按鈕指定一個在您的頁面中唯一的名稱,並將該按鈕的ClientIDMode
設置爲Static
:
<asp:Button ID="btnUniqueName1" runat="server" ClientIDMode="Static" ... />
由於ListView中最多隻有一個插入項目,因此該ID在窗體中應該是唯一的。您可以檢索這樣的按鈕:
document.getElementById('btnUniqueName1');
解決方案3
如果你必須找到按鈕,而無需修改服務器代碼,您可以檢索表單中的所有按鈕和尋找一些該屬性僅在您正在尋找的按鈕中找到:
var buttons = document.getElementsByTagName('button');
for (var i = 0; i < buttons.length; i++) {
var button = buttons[i];
// Check if that button is the one you want
// Look for some unique attribute, class name, etc.
if (button.className == 'btnUniqueClassName') {
// The button was found
button.disabled = true;
}
}
謝謝。我不應該觸摸代碼。有沒有一種方法,我可以直接在aspx頁面中檢索客戶端點擊 – bhavya158
我更新了我的答案,其中只包含Javascript代碼。 – ConnorsFan
然後我放回第二個解決方案。 – ConnorsFan