如何为单选按钮列表创建数据源?

Posted

技术标签:

【中文标题】如何为单选按钮列表创建数据源?【英文标题】:how to create datasource for radiobuttonlist? 【发布时间】:2011-10-21 04:04:08 【问题描述】:

我想自己为radiobuttonlist创建几个项目,项目有文本和值属性。如何在 c#/asp.net 中做到这一点?提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用 Dictionary 对象来存储键/值并将其绑定到 RadioButtonList,如下所示:

        Dictionary<string, string> values = new Dictionary<string, string>();
        values.Add("key 1", "value 1");
        values.Add("key 2", "value 2");
        values.Add("key 3", "value 3");

        RadioButtonList radioButtonList = new RadioButtonList();
        radioButtonList.DataTextField = "Value";
        radioButtonList.DataValueField = "Key";
        radioButtonList.DataSource = values;
        radioButtonList.DataBind();

或者您也可以像这样将项目添加到 RadioButtonList Items 集合中:

        radioButtonList.Items.Add(new ListItem("Text 1", "Value 1"));
        radioButtonList.Items.Add(new ListItem("Text 2", "Value 2"));
        radioButtonList.Items.Add(new ListItem("Text 3", "Value 3"));

【讨论】:

很抱歉,有人可以向我解释一下 radioButtonList.DataTextField = "Value";和 radioButtonList.DataValueField = "Key";做?这如何将其绑定到添加的值?【参考方案2】:

您可以创建自己的数据源,该数据源将与其他标准控件一起自动显示在 VisualStudio 工具箱中,如果您确实需要此类数据源,请尝试以下操作:

public class CustomDataSource : System.Web.UI.WebControls.ObjectDataSource

    public CustomDataSource()            
    
        // Hook up the ObjectCreating event so we can use our custom object
        ObjectCreating += delegate(object sender, ObjectDataSourceEventArgs e)
                           
                             // Here we create our custom object that the ObjectDataSource will use
                             e.ObjectInstance = new DataAccessor()
                           ;
        


class DataAccessor

   [DataObjectMethod(DataObjectMethodType.Insert, true)]
   public void Add(string text, string value)
   
       // Insert logic
   

   [DataObjectMethod(DataObjectMethodType.Update, true)]
   public void Update(int id, string text, string value)
   
       // Update logic
    

   [DataObjectMethod(DataObjectMethodType.Select, true)]
   public IEnumerable<MyRadioButtonEntryWrapper> List(int filterById)
   
       // Select logic
   

ASPX:

<%@ Register TagPrefix="cc1" Namespace="DataLayer.DataSources" %>
 <cc1:CustomDataSource ID="customDataSource" runat="server" 
                TypeName="DataAccessor" 
                OldValuesParameterFormatString="original_0" 
                InsertMethod="Add"                                 
                UpdateMethod="Update">
                <UpdateParameters>
                    <asp:Parameter Name="id" Type="Int32" />
                    <asp:Parameter Name="text" Type="String" />
                    <asp:Parameter Name="value" Type="String" />
                </UpdateParameters>
                <InsertParameters>
                    <asp:Parameter Name="text" Type="String" />
                    <asp:Parameter Name="value" Type="String" />
                </InsertParameters>
            </cc1:ArticleTypeDataSource>

【讨论】:

【参考方案3】:

您可以使用 DataTable 作为数据源(或其他可绑定源),并将 DataTable 绑定到 RadioButton 列表。使用 DataTextField 和 DataValueField 属性来指定哪一列用于文本,哪一列用于值。

【讨论】:

以上是关于如何为单选按钮列表创建数据源?的主要内容,如果未能解决你的问题,请参考以下文章

如何为单选按钮和复选框设置禁用/只读功能

如何为单选按钮分配一个值并稍后在 Android 中检索该值?

在 tkinter python 中给单选按钮一个默认值

如何为 RadioButton 赋值

如何使 Struts 单选标签创建单选按钮的垂直列表

如何为动态生成的内容编写自定义表单助手模板?