各位大俠,幫忙看下是什麼問題?????

时间:2021-01-26 16:04:03
一個查詢界面,功能就是點了Query Button後,將查詢的數據顯示在Datagrid中。

界面上有三個Checkbox,ck1如果選中的話,ck2,ck3的enabled就為false,如果ck1取消選中,ck2,ck3的enabled就為true。

這裡的控制是用javascript寫的。

腳本如下:
<script language="javascript" type="text/javascript">
function CheckBox1_Click()
{
if (document.getElementById("CheckBox1").checked==true)
{
document.getElementById("CheckBox2").disabled=true;
document.getElementById("CheckBox3").disabled=true;

document.getElementById("CheckBox2").checked=false;
document.getElementById("CheckBox3").checked=false;
}
else
{
document.getElementById("CheckBox2").disabled=false;
document.getElementById("CheckBox3").disabled=false;
}
}
</script>
現在的問題是:

在Query之前,頁面的控制沒有問題。

如果在Query之前沒有選中ck1,Query後,頁面的控制也沒有問題。

但是,如果在query之前,將ck1選中的話,Query之後,取消ck1的選中,ck2,ck3的enabled無法還原為true了。

調試腳本的時候發現,“query之後,取消ck1的選中”,腳本可以執行到

document.getElementById("CheckBox2").disabled=false;這句

但是無法改變CheckBox2的enabled狀態。

另外,只有這裡有控制到ck2,ck3的狀態的代碼,其余就沒有了。

private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁
if(!IsPostBack)
{
}
else
{
this.CheckBox2.Enabled=!this.CheckBox1.Checked ;
this.CheckBox3.Enabled=!this.CheckBox1.Checked ;
}


各位大俠,幫忙看下是什麼問題?????

急,多謝了!!!!!

16 个解决方案

#1


UP

#2


顶你的

#3


UP

#4


UP

#5


UP

#6


UP

#7


帮顶接分。。。



=====================================
《《《《《苦海无边 回头无岸》》》》》
=====================================

#8


这样的代码何必用js呢?

#9


this.CheckBox2.Enabled=!this.CheckBox1.Checked;

如果选中CheckBox1会导致生成类似:
<span disabled="disable"><input type="checkbox" id="CheckBox2".....
这样的代码。可以改成如下代码:
function CheckBox1_Click()
{
if (document.getElementById("CheckBox1").checked)
{
document.getElementById("span1").disabled=true;

document.getElementById("CheckBox2").checked=false;
document.getElementById("CheckBox3").checked=false;
}
else
{

document.getElementById("span1").disabled=false;
}
}
</script>
....
<asp:CheckBox id="CheckBox1" runat="server" Text="CheckBox1" OnClick="CheckBox1_Click();"></asp:CheckBox>
<span id="span1" runat="server">
<asp:CheckBox id="CheckBox2" runat="server" Text="CheckBox2"></asp:CheckBox>
<asp:CheckBox id="CheckBox3" runat="server" Text="CheckBox3"></asp:CheckBox>
</span>
.....
cs文件:
...
this.span1.Disabled=this.CheckBox1.Checked;
...

#10


这样的代码何必用js呢?


-----------------------------------
當然用JS,我知道C#的的代碼也可以控制,但是這樣會刷新頁面。

#11


webwait(webwei) ( ),多謝了,放到span中的確可以。

但是,上面只是摹擬我的問題,我的控件都是放在table中的,span不能包含tr,所以我要加上20幾個span。

再看看大家有沒有好辦法。

#12


UP

#13


UP

#14


if(!IsPostBack)
{
}
else
{
this.CheckBox2.Enabled=!this.CheckBox1.Checked ;
this.CheckBox3.Enabled=!this.CheckBox1.Checked ;
}
这里有问题。把
this.CheckBox2.Enabled=!this.CheckBox1.Checked ;
this.CheckBox3.Enabled=!this.CheckBox1.Checked ;
删除。

然后在PostBack以后去重新检查CheckBox1的Checked状态。
把这段代码放到aspx的最下面。

<script language="javascript" type="text/javascript">
//alert(window.CheckBox1_Click);
CheckBox1_Click();
</script>

#15


up....

#16


按照skytear() 的方法,搞定,結貼。

#1


UP

#2


顶你的

#3


UP

#4


UP

#5


UP

#6


UP

#7


帮顶接分。。。



=====================================
《《《《《苦海无边 回头无岸》》》》》
=====================================

#8


这样的代码何必用js呢?

#9


this.CheckBox2.Enabled=!this.CheckBox1.Checked;

如果选中CheckBox1会导致生成类似:
<span disabled="disable"><input type="checkbox" id="CheckBox2".....
这样的代码。可以改成如下代码:
function CheckBox1_Click()
{
if (document.getElementById("CheckBox1").checked)
{
document.getElementById("span1").disabled=true;

document.getElementById("CheckBox2").checked=false;
document.getElementById("CheckBox3").checked=false;
}
else
{

document.getElementById("span1").disabled=false;
}
}
</script>
....
<asp:CheckBox id="CheckBox1" runat="server" Text="CheckBox1" OnClick="CheckBox1_Click();"></asp:CheckBox>
<span id="span1" runat="server">
<asp:CheckBox id="CheckBox2" runat="server" Text="CheckBox2"></asp:CheckBox>
<asp:CheckBox id="CheckBox3" runat="server" Text="CheckBox3"></asp:CheckBox>
</span>
.....
cs文件:
...
this.span1.Disabled=this.CheckBox1.Checked;
...

#10


这样的代码何必用js呢?


-----------------------------------
當然用JS,我知道C#的的代碼也可以控制,但是這樣會刷新頁面。

#11


webwait(webwei) ( ),多謝了,放到span中的確可以。

但是,上面只是摹擬我的問題,我的控件都是放在table中的,span不能包含tr,所以我要加上20幾個span。

再看看大家有沒有好辦法。

#12


UP

#13


UP

#14


if(!IsPostBack)
{
}
else
{
this.CheckBox2.Enabled=!this.CheckBox1.Checked ;
this.CheckBox3.Enabled=!this.CheckBox1.Checked ;
}
这里有问题。把
this.CheckBox2.Enabled=!this.CheckBox1.Checked ;
this.CheckBox3.Enabled=!this.CheckBox1.Checked ;
删除。

然后在PostBack以后去重新检查CheckBox1的Checked状态。
把这段代码放到aspx的最下面。

<script language="javascript" type="text/javascript">
//alert(window.CheckBox1_Click);
CheckBox1_Click();
</script>

#15


up....

#16


按照skytear() 的方法,搞定,結貼。