代码如下:
protected System.Web.UI.WebControls.RadioButtonList rblDeliverWise;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

if( !IsPostBack )
{
BindDeliverInfo();
}
} private void BindDeliverInfo()
{
OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Server.MapPath(ConfigurationSettings.AppSettings["Database"]));
Conn.Open(); string strSQLCmd = "Select * From DeliverInfo ORDER BY DeliverArray DESC";
OleDbCommand CmdDeliver = new OleDbCommand(strSQLCmd,Conn);
OleDbDataReader drDeliver = CmdDeliver.ExecuteReader();
while (drDeliver.Read()==true)
{
rblDeliverWise.Items.Add( new ListItem(drDeliver["DeliverMode"].ToString(),drDeliver["DeliverMode"].ToString()));
}
drDeliver.Close();
Conn.Close();
} private void btOrder_Click(object sender, System.EventArgs e)
{
Response.Write("<script>alert('"+ rblDeliverWise.SelectedValue.ToString() +"');</script>");
}当btOrder_Click时,弹出的窗口中应有从后台数据库中读出的数据,但是什么也没有读出来.换成CheckBoxList时就没事了,但我做这个一定要是单选的.大家帮我看一下代码那儿出了问题?谢谢!

解决方案 »

  1.   

    我发现点一次时.Reload会把我选的那个值给丢了.变成那一个也没有选.大家帮我想一下啊,一晚上了~
      

  2.   

    为什么要使用脚本输出值呢?
    你可以直接使用
    this.Label.Text = rblDeliverWise.SelectedValue;
    另外,你可以使用断点测试你的程序.
    同时,检查一下你的页面的enabledviewstate是否被允许,如果页面的viewstate=false,那么,每次提交都会导致你的数据重新加载一次
      

  3.   

    那个script是用来测试看是不是得到了数据,和使用label是一样的,enabledviewstate的值是true,我换成ListBox控件,还是有这个问题,大概是在重载的时候他又从数据库中读了一次数据,导致选择成了默认的。
    如果我把默认的选定了一个选项,那么他弹出的消息一直是默认选项的那个值,选其它的,还是默认的值。
      

  4.   

    问题是,看你的代码,根本不可能在重载的时候又重新读取一次数据库啊.
    要么,就是你在另外的其他地方重新调用了BindDeliverInfo了.
    所以,你还是使用调试的方式对你的BindDeliverInfo进行测试吧.
    还有一个检验办法,重新建立一个页面,做一个简单化的测试.有时候是因为页面中的某些代码/事件丢失而引起的.