0

我正在后面的代码中动态创建大量单选按钮(加载时 vb.net),并且想知道如何在它们上创建事件。我有一个带有两列的gridview,每一行在两个列中都有一个单选按钮,它们都在一个组中(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实际上是翻转的(垂直而不是水平)。因此,我有名为 0、1、2、3、4 等的单选按钮,其中 0 和 1 在一个组中,2 和 3 在一个组中等等,我只想知道哪个已更改。请记住,尽管我需要 RB 的名称或它在我的 gridView 中的位置,因为我还必须更改与之配对的 RB 的背景颜色!

4

1 回答 1

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
  })
});
于 2012-08-21T16:49:58.140 回答