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

时间:2016-04-06 00:51:29

标签: javascript c# asp.net

我是Java Script的新手。我有一个带有InsertItemTemplate的aspx ListView和一些按钮。现在我需要从JavaScript中的insertitemtemplate访问按钮来禁用它。这不起作用?

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

请帮帮我。

1 个答案:

答案 0 :(得分:0)

解决方案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:< / p>

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