我需要从自定义 RadioButtonList 中清除所选项目,但它在回发时不起作用。
我有一个继承自 ASP.Net RadioButtonList 的自定义控件。当控件具有最初选择的值时,如果我调用客户端函数来清除所选项目然后执行回发,则重新选择最初选择的项目。
如果我使用 ASP.Net RadioButtonList,在回发时,选定的项目会被清除,这样就可以了,但是一个简单地继承内置的类会失败
以简化形式:
<div>
<a href="javascript:Clear()">Clear</a>
</div>
<h1>
<asp:Label Text="ready..." runat="server" ID="lblTest" /></h1>
<script type="text/javascript">
function ChangeValue() {
var obj = document.getElementById('test_1');
obj.checked = true;
}
function Clear() {
var obj = document.getElementById('test_0');
obj.checked = false;
obj = document.getElementById('test_1');
obj.checked = false;
}
</script>
<asp:Button ID="button" runat="server" onclick="button_Click" />
在代码后面
public class MyRadio : RadioButtonList
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
MyRadio test = new MyRadio();
test.ID = "test";
test.Items.Add(new ListItem("First", "First"));
test.Items.Add(new ListItem("Second", "Second"));
if (!Page.IsPostBack)
test.SelectedValue = "Second";
this.Form.Controls.Add(test);
}
protected void button_Click(object sender, EventArgs e)
{
RadioButtonList rl = this.FindControl("test") as RadioButtonList;
if (rl.SelectedItem == null)
lblTest.Text = "No selected item";
else
lblTest.Text = rl.SelectedItem.Value + " - " + rl.SelectedItem.Text;
}
如果我将“test”更改为 RadioButtonList 并在页面中单击 clear 然后回发,我会看到文本“No selected item”,这是我需要的;这是在 .Net 4 上运行的,也在 .Net 4.5 上尝试过同样的错误。