需求:
1.页面上需要一组单选按钮,不同的单选按钮控制页面上显示不同的内容。
2.单选按钮需要从数据库里读数据,然后动态生成
3.已经写好了js函数 changeCriteria(ID),如果单选按钮改变触发该函数,控制页面内容的显示...
问题:用代码生成单选按钮添加不上OnCheckedChanged事件 (┬_┬)
C#中的实现代码
//dtResult是我已经从数据库中读出来的生成单选按钮的数据,一共两列,一个id,一个是RadioButton显示的text
int rowCount = dtResult.Rows.Count;
for (int i = 0; i < rowCount; i++)
{
RadioButton radio = new RadioButton();
radio.ID = "rad" + dtResult.Rows[i]["id"].ToString();
radio.Text = dtResult.Rows[i]["criteria"].ToString();
radio.GroupName = "radCriteria";
radio.Style.Value.Insert(0,"width:20px;border:0");
radio.TextAlign.Equals("right"); // 这句对不对还不知道 - =
radio.CheckedChanged="";
//现在想给每个RadioButton添加上函数OnCheckedChanged=changeCriteria(dtResult.Rows[i]["id"],因为需要监听RadioButton的改变来改变页面内容,可是radio怎么也点不出OnCheckedChanged来,要疯了 ::>_<::
RadioButtonPanel.Controls.Add(radio);
}
请问,该怎么样才能在动态添加单选按钮时给每个RadioButton加上监听函数啊?
如果我这种方法不行或者不好,请问还有其他什么方法能够达到同样的效果么?
不好意思,初学.net不久,还是菜鸟一只~
希望大家不吝赐教! (*^__^*)
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
CreatedRadio();
}
private void CreatedRadio()
{
RadioButton rad = new RadioButton();
rad.Text = "Test";
rad.AutoPostBack = true;
rad.CheckedChanged += new EventHandler(rad_CheckedChanged);
phl.Controls.Add(rad);
}
void rad_CheckedChanged(object sender, EventArgs e)
{
RadioButton rad = sender as RadioButton;
if (rad != null)
{
Response.Write(rad.Checked);
}
else
{
Response.Write("xx");
}
}
可以在aspx页面上进行创建
<script type="text/javascript">
for (var i = 0; i < 5; i++) {
var inp = document.createElement("INPUT");
inp.setAttribute("type", "radio");
inp.setAttribute("name", "rs");
inp.setAttribute("id", "");
inp.onclick = function() { alert(inp.id); };
document.body.appendChild(inp);
}
</script>
然后这里可以使用变量值,变量值由你的dtResult来决定。