【问题标题】:How to Create Dynamic RadioButtonList with values from the DataBase [duplicate]如何使用数据库中的值创建动态 RadioButtonList [重复]
【发布时间】:2013-12-30 04:22:54
【问题描述】:

我的表结构

Group | Values
------  ------
Group1   Option 1
Group1   Option 2
Group1   Option 3
Group1   Option 4

Group2   Option 1
Group2   Option 2
Group2   Option 3
Group2   Option 4

现在使用上面的表格值,我需要创建动态 radiobuttonlist 控件,如下所示

第 1 组

  • 选项 1
  • 选项 2
  • 选项 3
  • 选项 4

第 2 组

  • 选项 1
  • 选项 2
  • 选项 3
  • 选项 4

有没有可能做到这一点?

并且单选按钮列表的数量也是dynamic。它可以有任意数量的单选按钮列表。我需要提供unique ID for each radiobuttonlist 并从所有单选按钮列表中获取值。

这类似于在线考试,但它不一样为了您更好地理解我提到了在线考试。

【问题讨论】:

  • @Plutonix 我已经引用了链接,但这不适合我的情况..
  • 是的,有可能。您可以动态编写UL 控件,也可以在onClick 中编写javascript 来调用postBack。这只是其中一种方法

标签: asp.net vb.net sql-server-2012 radiobuttonlist dynamic-controls


【解决方案1】:
dtgrp = db.Getval(select distinct Group from table1)
dtval = db.GetVal(select Values from table1)

 For i = 0 To dtgrp.Columns.Count - 1
 Dim rdl As New RadioButtonList
 rdl.ID = dtgrp.Columns(i).ToString()
 rdl.Text = dtgrp.Columns(i).ToString() & vbCrLf
 For j = 0 To dtval.Rows.Count - 1
 If Not String.IsNullOrEmpty(dtval.Rows(j)(i).ToString()) Then
 rdl.Items.Add(dtval.Rows(j)(i).ToString())
 End If
 Next
 pnlgrp.Controls.Add(rdl)
 Next

【讨论】:

    【解决方案2】:

    这会给你答案:

     <form id="form1" runat="server">
        <div>
            <asp:PlaceHolder runat="server" ID="PlaceHolder1" />
            <asp:Button runat="server" ID="Button1" OnClick="Button1_Click" Text="Submit" />
            <asp:Label runat="server" ID="Label1" />
        </div>
        </form>
    
     protected void Button1_Click(object sender, EventArgs e)
            {
                LoadControls();
            }
            private void LoadControls()
            {
    
    
                string conString = ConfigurationManager.ConnectionStrings["aspnetdbConnectionString"].ConnectionString;
                SqlConnection con = new SqlConnection(conString);
                con.Open();
                SqlCommand cmd = new SqlCommand("select * from groupInfo order by group1", con);
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                string strGroupName = string.Empty;
                DataTable dt = ds.Tables[0];
                int flag = 0;
    
                RadioButtonList rblGroup = new RadioButtonList();
                Label lblGroup;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
    
                    while (strGroupName == Convert.ToString(dt.Rows[i][0]))
                    {
                        i++;
                        goto Outer;
                    }
    
                    strGroupName = Convert.ToString(dt.Rows[i][0]);
                    rblGroup = new RadioButtonList();
                    lblGroup = new Label();
                    lblGroup.Text = strGroupName;
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        if (strGroupName == Convert.ToString(dt.Rows[j][0]))
                        {
                            ListItem lblItem = new ListItem(Convert.ToString(dt.Rows[j][1]), Convert.ToString(dt.Rows[j][1]));
                            rblGroup.Items.Add(lblItem);
                        }
                    }
                    PlaceHolder1.Controls.Add(lblGroup);
                    PlaceHolder1.Controls.Add(rblGroup);
    
                Outer:
                    continue;
                }
            }
    

    【讨论】:

    • 它会给出你想要的正确答案
    【解决方案3】:

    基本上,如果您动态地创建一个控件,您将需要在页面的每个回传中重新加载这些控件(具有相同的 id)。

    否则,它们将变为 null,您将无法访问它们。

    这是一个示例。它会动态加载RadioButtonList 控件,并在单击按钮时将选定的值显示回来。

    <asp:PlaceHolder runat="server" ID="PlaceHolder1"/>
    <asp:Button runat="server" ID="Button1" OnClick="Button1_Click" Text="Submit" />
    <asp:Label runat="server" ID="Label1"/>
    
    protected void Page_Load(object sender, EventArgs e)
    {
        LoadControls();
    }
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        var radioButtonList = PlaceHolder1.FindControl("1") as RadioButtonList;
        Label1.Text = radioButtonList.SelectedValue;
    }
    
    private void LoadControls()
    {
        var tmpRBL = new RadioButtonList();
        tmpRBL.ID = "1";
    
        for (int i = 1; i <= 5; i++)
        {
            var tmpItem = new ListItem(i.ToString(), i.ToString());
            tmpRBL.Items.Add(tmpItem);
        }
    
        PlaceHolder1.Controls.Add(tmpRBL);
    }
    

    【讨论】:

    • 这个答案在这里陈述stackoverflow.com/questions/16723753/…。我想你只是做了复制粘贴操作
    • 是的,我做到了,如果这可以帮助这个人,那么复制粘贴并不违法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多