none
datalist里嵌套radiobutton的问题 RRS feed

  • 问题

  • 各位大虾:
        我通过遍历datalist来找radiobuttonlist以下是代码
      for(datalistitem dl in datalist1.Items)

        string mess="";
        Radiobuttonlist rbl=new Radiobuttonlist();
        rbl=((Radiobuttonlist)dl.FindControl("Radiobuttonlist1"));
        mess=rbl.SelectedValue;
       Respone.Write("<script>alert('"+mess+"')</script>");
    }
    通过单步来查,Radiobuttonlist是能找到,能读到Radiobuttlist里item的值,但是selectValue始终是第一个,请问是什么原因造成的?
    不胜感激。
    2009年3月19日 7:09

答案

  • 你好,我用你的代码,在我的机器上进行了调试,代码运行的很好,没有问题。选择False输出0,选择Ture输出1。
    建议你用你的机器,新建一个解决方案,然后用你上面的代码,如果正常运行,说明有其他因素的影响,
    可能是配置文件。
    2009年3月19日 8:19
    版主

全部回复

  • 似乎是数据绑定的问题,好像Radiobuttonlist里的item手动添加进去就会出现这样子的现象。
    2009年3月19日 7:14
  • 你好,可能是因为Page.IsPostBack的时候修改了里面值,请检查一下,
    还有一种可能是你的这个遍历方法的位置。
    2009年3月19日 7:27
    版主
  • 你好,我把源程序贴出来,应该不是你说的问题。
    2009年3月19日 7:48
  •  <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" EnableViewState="true" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1">
                <ItemTemplate>
                    uUserName:
                    <asp:Label ID="uUserNameLabel" runat="server" Text='<%# Eval("uUserName") %>'></asp:Label><br />
                    <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
                        <asp:ListItem Value="0">False</asp:ListItem>
                        <asp:ListItem Value="1">True</asp:ListItem>
                    </asp:RadioButtonList><br />
                </ItemTemplate>
            </asp:DataList>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
            <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/exam.mdb"
                SelectCommand="SELECT [uUserName] FROM [cadre_info] WHERE ([ID] < ?)">
                <SelectParameters>
                    <asp:Parameter DefaultValue="5" Name="ID" Type="Int32" />
                </SelectParameters>
            </asp:AccessDataSource>
        </form>
    </body>
    </html>
    --------------------------------------------------

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            foreach (DataListItem dl in DataList1.Items)
            {
                string mess = "";
                RadioButtonList rbl = new RadioButtonList();
                rbl = ((RadioButtonList)dl.FindControl("RadioButtonList1"));
                mess = rbl.SelectedValue;
                Response.Write("<script>alert('" + mess + "')</script>");
            }
        }
    }

    2009年3月19日 7:52
  • 你好,我用你的代码,在我的机器上进行了调试,代码运行的很好,没有问题。选择False输出0,选择Ture输出1。
    建议你用你的机器,新建一个解决方案,然后用你上面的代码,如果正常运行,说明有其他因素的影响,
    可能是配置文件。
    2009年3月19日 8:19
    版主
  • 好像是机子的问题,我换了一台电脑好像也成功了。。。。 感谢
    2009年3月19日 8:26
  • 呵呵,不客气!
    2009年3月19日 8:29
    版主