将更改的事件附加到动态创建的Radiobutton

时间:2012-08-21 15:36:52

标签: asp.net events radio-button

我正在代码后面动态创建一个radiobuttons负载(vb.net on load),我想知道我应该如何在它们上创建事件。我有一个有两列的gridview,每行在两个列中都有一个radiobutton,它们组合在一起(fyi组表示检查一个,另一个未经检查)。我想在选中的任何一个上将背景颜色更改为黄色。我最好怎么做? Javascript(捕获所有单选按钮更改事件),JQuery(捕获所有单选按钮更改事件)或Vb.net(创建时附加方法)?这就是我创建它们的方式;

Dim r As RadioButton
    Dim l As Label
    Dim radioBtnNumber As Integer = 0
    For row As Integer = 0 To GridView1.Rows.Count - 1
        If GridView1.Rows(row).RowType = DataControlRowType.DataRow Then
            Dim x As Integer = 0
            For Each tc As TableCell In GridView1.Rows(row).Cells
                l = New Label()
                l.Text = tc.Text
                If (x = 1) Or (x = 2) Then
                    r = New RadioButton()
                    r.GroupName = String.Format("RdBtnGroup{0}", row)
                    r.ID = radioBtnNumber.ToString
                    //Could add in event here. Tried this but didn't work
                    //r.Attributes.Add("OnCheckedChanged", "radiobuttonChecked()")
                    tc.Controls.Add(r)
                    radioBtnNumber = radioBtnNumber + 1
                End If
                tc.Controls.Add(l)
                x = x + 1
            Next
        End If
    Next

该代码实际上更令人困惑,因为gridview实际上是翻转的(veritical,而不是水平)。所以我有一个名为0,1,2,3,4等的单选按钮,一组中有0和1,组中有2和3等,我只想知道哪一个已被更改。请记住,虽然我需要RB的名称或它在我的gridView中的位置,因为我必须更改它配对的RB的背景颜色!

1 个答案:

答案 0 :(得分:0)

添加行(代码为C#,转换为VB):

r.CheckedChanged += new System.EventHandler(this.radiobuttonChecked);

创建RadioButton时。 radiobuttonChecked应该是您网页的方法:

protected void radiobuttonChecked(Object sender, EventArgs e)
{
...
}

您可以将发件人转发给RadioButton并分析其属性。这将导致回发到服务器,您可以在其中修改单选按钮。

如果您想在客户端上执行此操作,那么您可以先将CssClass(例如“rbClass”)分配给所有这些文件的相同字符串,并使用

r.Attributes.Add("pairName", "<name for the pair of radiobuttons>")

然后将javascript添加到您的页面:

$(document).ready(function(){
  $(".rbClass").change(function(){
    // here you look at $(this).attr and 
    // adjust its and its pair's css accordingly
  })
});