Как создать источник данных для radiobuttonlist? - PullRequest
11 голосов
/ 05 августа 2011

Я хочу создать несколько элементов для radiobuttonlist самостоятельно, элемент имеет свойства текста и значения.Как это сделать в c # / asp.net?Заранее спасибо.

Ответы [ 3 ]

15 голосов
/ 05 августа 2011

Вы можете использовать объект 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"));
2 голосов
/ 05 августа 2011

Вы можете создать собственный источник данных, который будет автоматически отображаться в наборе инструментов 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>
1 голос
/ 05 августа 2011

Вы можете использовать DataTable для источника данных (или другого связываемого источника) и связать DataTable со списком RadioButton. Используйте свойства DataTextField и DataValueField, чтобы указать, какой столбец используется для текста, а какой - для значения.

...