簡體   English   中英

如何在 Java Script 中從 InsertItemTemplate 中找到控件

[英]How to find control from InsertItemTemplate in Java Script

我是 Java Script 的新手。 我有一個帶有 InsertItemTemplate 和一些按鈕的 aspx ListView。現在我需要從 JavaScript 中的 insertitemtemplate 訪問按鈕以禁用它。 這是行不通的?

document.getElementById('<%= Button1.ClientID %>').disable = true;

請幫我。

解決方案1

您可以在代碼隱藏中設置 Javascript 代碼,您可以在其中訪問 ListView 的每個項目的控件的ClientID屬性。 例如,如果您的項目模板中有兩個按鈕,並且您想在單擊btn2時禁用btn1 ,則可以在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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM