遍历datalist每一个radiobuttonlist,然后挨个儿bind

解决方案 »

  1.   

    在ItemDataBound事件中绑定,下面这个例子虽然是用Repeater,但其原理一样:<%@Import Namespace="System.Data"%>
    <script runat="server" Language="C#">
    void Page_Load(object src,EventArgs e){
    if(!Page.IsPostBack){
    DataTable table=new DataTable();
    table.Columns.Add("person",typeof(string));
    table.Columns.Add("address",typeof(string));
    DataRow row;
    for(int i=0;i<10;i++){
    row=table.NewRow();
    row["person"]="Person "+i.ToString();
    if(i%2==0)
    row["address"]="延安市";
    else if(i%3==0)
    row["address"]="西安市";
    else if(i%5==0)
    row["address"]="上海市";
    else
    row["address"]="吴旗县";
    table.Rows.Add(row);
    }
    repeater1.DataSource=table;
    repeater1.DataBind();
    }
    }void BindAddress(object src,RepeaterItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
    RadioButtonList rdl=(RadioButtonList)e.Item.FindControl("rdl");
    if(rdl!=null){
    rdl.Items.FindByText((string)((DataRowView)e.Item.DataItem)["address"]).Selected=true;
    }
    }
    }
    </script>
    <HTML><HEAD>
    <TITLE> Webdiyer 制造:) (www.webdiyer.com) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <asp:Repeater runat="server" id="repeater1" OnItemDataBound="BindAddress">
    <ItemTemplate>
    姓名:<%#((DataRowView)Container.DataItem)["person"]%><br>
    来自:
    <asp:RadioButtonList runat="server" id="rdl" RepeatLayout="flow" RepeatDirection="horizontal">
    <asp:ListItem>吴旗县</asp:ListItem>
    <asp:ListItem>延安市</asp:ListItem>
    <asp:ListItem>西安市</asp:ListItem>
    <asp:ListItem>上海市</asp:ListItem>
    </asp:RadioButtonList><hr>
    </ItemTemplate>
    </asp:Repeater>
    </form>
    </BODY></HTML>