我是Java Script的新手。我有一个带有InsertItemTemplate的aspx ListView和一些按钮。现在我需要从JavaScript中的insertitemtemplate访问按钮来禁用它。这不起作用?
document.getElementById('<%= Button1.ClientID%>')。disable = true;
请帮帮我。
答案 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;
}
}