控件可用

maomao9414 2010-01-16 06:18:35
有一个checkbox 和一个linkbutton(lbtn).

我把lbtn设置为不可用,我要checkbox 选中后lbtn 就为可用。 怎么弄啊?



...全文
99 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ponymzh 2010-01-16
  • 打赏
  • 举报
回复

//这种方法还是有一点小问题,就是刷新后,link还是可用状态,虽然点击并没实用。
<asp:CheckBox ID="CheckBox2" runat="server" onclick="document.getElementById('lbtn').disabled = !this.checked;" />
<asp:LinkButton ID="lbtn" runat="server" OnClientClick="return (document.getElementById('CheckBox2').checked == true) ? true : false;">LinkButton </asp:LinkButton>
//我改进的方法,多了一个角本
<asp:CheckBox ID="CheckBox1" runat="server" onclick="document.getElementById('lkbtn').disabled = !this.checked;" />
<asp:LinkButton ID="lkbtn" runat="server" Text="Link button" OnClientClick="return (document.getElementById('CheckBox1').checked);" />
<script language="javascript" type="text/javascript">
(document.getElementById('CheckBox1').checked)?document.getElementById('lkbtn').disabled =false:document.getElementById('lkbtn').disabled =true;
</script>
//最后是aspx用法

<asp:CheckBox ID="CheckBox3" runat="server" AutoPostBack="True"
oncheckedchanged="check3_Changed" />
<asp:LinkButton ID="LinkButton1" runat="server" Enabled="False">LinkButton</asp:LinkButton>

后台

protected void check3_Changed(object sender, EventArgs e)
{
if (CheckBox3.Checked == true)
{
LinkButton1.Enabled = true;
}
else
{
LinkButton1.Enabled = false;
}

}
特别 2010-01-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
如果不考虑回发操作,而使用javascript编写纯浏览器端程序的时候,最好也能够为控件布局未雨绸缪。我一般都要求至少考虑到后台ID和浏览器端id根本不是一回事的问题:HTML code<asp:CheckBoxID="CheckBox1" runat="server"/><asp:LinkButtonID="lkbtn" runat="server" Text="Link button" Enabled="false"/>C# codethis.CheckBox1.Attributes["onclick"]="document.getElementById('"+ lkbtn.ClientID+"').disabled = !this.checked;";

另外,如果考虑到回发操作(即使使用UpdatePanel也是回发的),我比较欣赏绑定表达式能够更清晰一点:HTML code<asp:CheckBoxID="CheckBox1" runat="server" AutoPostBack="true"/><asp:LinkButtonID="lkbtn" runat="server" Text="Link button" Enabled="<%# CheckBox1.Checked %>"/>C# codeprotectedvoid Page_PreRender(object sender, EventArgs e)
{this.lkbtn.DataBind();
}使用绑定表达式,很容易在设计界面时同时设置程序行为,即使美工也能微调软件。
[/Quote]
我不得不对你膜拜
  • 打赏
  • 举报
回复
如果不考虑回发操作,而使用javascript编写纯浏览器端程序的时候,最好也能够为控件布局未雨绸缪。我一般都要求至少考虑到后台ID和浏览器端id根本不是一回事的问题:
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:LinkButton ID="lkbtn" runat="server" Text="Link button" Enabled="false" />
this.CheckBox1.Attributes["onclick"] = "document.getElementById('" + lkbtn.ClientID + "').disabled = !this.checked;";


另外,如果考虑到回发操作(即使使用UpdatePanel也是回发的),我比较欣赏绑定表达式能够更清晰一点:
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" />
<asp:LinkButton ID="lkbtn" runat="server" Text="Link button" Enabled="<%# CheckBox1.Checked %>" />
protected void Page_PreRender(object sender, EventArgs e)
{
this.lkbtn.DataBind();
}
使用绑定表达式,很容易在设计界面时同时设置程序行为,即使美工也能微调软件。
ponymzh 2010-01-16
  • 打赏
  • 举报
回复
果然,楼上的考虑周全,我的
<asp:CheckBox ID="CheckBox1" runat="server" onclick="document.getElementById('lkbtn').disabled = !this.checked;" />
<asp:LinkButton ID="lkbtn" runat="server" Text="Link button" Enabled="True" />
<script language="javascript" type="text/javascript">document.getElementById('lkbtn').disabled ="true";</script>
没考虑到点击刷新!
wuyq11 2010-01-16
  • 打赏
  • 举报
回复
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
LinkButton1.Enabled = CheckBox1.Checked?true:false ;
}
koukoujiayi 2010-01-16
  • 打赏
  • 举报
回复
5楼将LinkButton的Enabled设置为False,则永远不能触发click事件,
若设置为true,则LinkButton用js设置不可用的话,仍然可以点击,所以正确的代码应该是:
<asp:CheckBox ID="CheckBox1" runat="server" Checked="true" onclick="document.getElementById('lbtn').disabled = !this.checked;" />
<asp:LinkButton ID="lbtn" runat="server" OnClientClick="return (document.getElementById('CheckBox1').checked == true) ? true : false;">LinkButton</asp:LinkButton>

wzp144650 2010-01-16
  • 打赏
  • 举报
回复
Enable=true;
小_虎 2010-01-16
  • 打赏
  • 举报
回复
楼上的漂亮
duwa789 2010-01-16
  • 打赏
  • 举报
回复


<asp:CheckBox runat="server" onclick="document.getElementById('lkbtn').disabled = !this.checked;" />
<asp:LinkButton ID="lkbtn" runat="server" Text="Link button" Enabled="false" />
lerit 2010-01-16
  • 打赏
  • 举报
回复
在checkbox的CheckedChanged事件中即可完成
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox1.Checked)
{
lbtn.Enabled = true;
}
}
小_虎 2010-01-16
  • 打赏
  • 举报
回复
js的话就onclick="fnchk()"

function fnchk()
{
if(checkbox1.checked==true)
{
document.getElementById("LinkButton1").disabled=true;
}
else
{
document.getElementById("LinkButton1").disabled=false;

}
}
小_虎 2010-01-16
  • 打赏
  • 举报
回复
首先设置checkbox的 AutoPostBack="True"
然写个他的事件:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox1.Checked == true)
{
LinkButton1.Enabled = true;
}
else
{
LinkButton1.Enabled = false;
}
}


ps:这个最好用js实现,无刷新才是客户体验。
koukoujiayi 2010-01-16
  • 打赏
  • 举报
回复
用C#还是JS??

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧