谁知道DataList控件下的单选框怎么弄的吗?(网上很多都是DataGrid控件下的单选框)
并且后台怎么取到点击的单选框的值?

解决方案 »

  1.   

    //html代码
    <%@ Page language="c#" Codebehind="WebForm3.aspx.cs" AutoEventWireup="false" Inherits="Document.WebForm3" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm3</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <ASP:DATALIST id="DataList1" BORDERWIDTH="1px" GRIDLINES="Both" BORDERSTYLE="None" CELLPADDING="3"
    RUNAT="server" WIDTH="100%">
    <SELECTEDITEMSTYLE FONT-BOLD="True" FORECOLOR="#000066"></SELECTEDITEMSTYLE>
    <FOOTERTEMPLATE>
    </FOOTERTEMPLATE>
    <ITEMTEMPLATE>
    <TABLE CELLPADDING="0" WIDTH="100%" BORDER="0">
    <COLGROUP>
    <COL WIDTH="20%">
    <COL WIDTH="30%">
    <COL WIDTH="20%">
    <COL WIDTH="30%">
    </COLGROUP>
    <TR>
    <TD>Title:</TD>
    <TD>
    <ASP:LABEL ID="Title" RUNAT="server" TEXT='<%# DataBinder.Eval(Container.DataItem, "Title") %>'>
    </ASP:LABEL></TD>
    <TD>
    <asp:RadioButton ID="male" Runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "male") %>' Text="男">
    </asp:RadioButton></TD>
    <TD>
    <asp:RadioButton ID="female" Runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "female") %>' Text="女">
    </asp:RadioButton></TD>
    </TR>
    <TR>
    <TD>OwningUser:</TD>
    <TD>
    <ASP:LABEL ID="OwningUser" RUNAT="server" TEXT='<%# DataBinder.Eval(Container.DataItem, "OwningUser") %>'>
    </ASP:LABEL></TD>
    <TD></TD>
    <TD></TD>
    </TR>
    <TR>
    <TD>Content:</TD>
    <TD>
    <ASP:LABEL ID="Content" RUNAT="server" TEXT='<%# DataBinder.Eval(Container.DataItem, "Content") %>'>
    </ASP:LABEL></TD>
    <TD>NoteDate:</TD>
    <TD>
    <ASP:LABEL ID="NoteDate" RUNAT="server" TEXT='<%# DataBinder.Eval(Container.DataItem, "NoteDate") %>'>
    </ASP:LABEL></TD>
    </TR>
    <TR>
    <TD COLSPAN="4">
    <HR>
    </TD>
    </TR>
    </TABLE>
    </ITEMTEMPLATE>
    <HEADERSTYLE FONT-BOLD="True" FORECOLOR="White" CSSCLASS="dg_header"></HEADERSTYLE>
    <EDITITEMTEMPLATE>
    </EDITITEMTEMPLATE>
    </ASP:DATALIST>
    </form>
    </body>
    </HTML>
      

  2.   

    //cs代码
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace Document
    {
    /// <summary>
    /// Summary description for WebForm3.
    /// </summary>
    public class WebForm3 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataList DataList1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    this.DataList1.DataSource=CreateNoteTable();
    this.DataList1.DataBind();
    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: This call is required by the ASP.NET Web Form Designer.
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion public static DataTable CreateNoteTable()
    {
    DataTable dt = new DataTable(); DataColumn dc=new DataColumn("NoteID",typeof(int));
    dt.Columns .Add(dc);
    dt.PrimaryKey =new DataColumn[]{dc};
    dt.Columns .Add(new DataColumn("Title",typeof(string)));
    dt.Columns .Add(new DataColumn("OwningUser",typeof(string)));
    dt.Columns.Add(new DataColumn("Content",typeof(string)));
    dt.Columns.Add(new DataColumn("NoteDate",typeof(DateTime)));
    dt.Columns.Add(new DataColumn("male",typeof(bool)));
    dt.Columns.Add(new DataColumn("female",typeof(bool)));

    for(int m=1;m<50;m++)
    {
    DataRow dr = dt.NewRow();
    dr.ItemArray  = new object[] {m,"m"+m,"z"+m,"s"+m,DateTime.Now,true,false};
    dt.Rows .Add(dr);
    }
    return dt;
    }
    }
    }
      

  3.   

    例外詳細資訊: System.InvalidCastException: 指定的轉換無效。<asp:RadioButton ID="male" Runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "pono") %>' Text="男"></asp:RadioButton>
      

  4.   

    把groupname属性设置相同的名字
      

  5.   

    孟子里的是DATAGRID控件下的单选框啊, 没有DATALIST的啊
      

  6.   

    为什么这2条语句都取不到DATALIST控件里的值? 
    <td width="50" align="center">
    <input type=radio id=RadioName name=RadioName value='<%#DataBinder.Eval(Container.DataItem,"P_ID")%>'>
    </td>
              </tr>
            </table>
             </ItemTemplate> 
    </asp:datalist> 
    <input type="hidden" id=rd runat=server/> --------------------------------------------------Label1.Text = "您的是:<font color=red>"+Request.QueryString["RadioName"].ToString() +"</font>";int s1=int.Parse(((System.Web.UI.HtmlControls.HtmlInputRadioButton )DL_Main.Items[i].FindControl("RadioName")).Value); 为什么这2条语句都取不到DATALIST控件里的值? 
      

  7.   


    js脚本
    <script>
    {
       function change(obj)
       {
           var Forms=Form1.elements;
                   for(var i=0;i<Forms.length;i++)
                   {
                      if(Forms[i].type=='radio')
                      {
                           if(Forms[i].id!=obj.id)
                              Forms[i].checked=false;
                      
                }
       }
    }
    </script>
    //html
    <asp:datagrid id="DataGrid1" runat="server" Width="100%" AutoGenerateColumns="False" DataKeyField="uid">
    <AlternatingItemStyle CssClass="dg_alter"></AlternatingItemStyle>
    <ItemStyle CssClass="dg_item"></ItemStyle>
    <HeaderStyle CssClass="dg_header"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="选择">
    <ItemTemplate>
    <INPUT id="rbSelect" type="radio" runat="server" onclick="change(this)">
    <asp:Label id=lblID runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"uid") %>' Visible="False">
    </asp:Label>
    </ItemTemplate>
    </DataGrid>//cs
    private void btnOK_Click(object sender, System.EventArgs e)
    {
    try
    {
    int BookID=Convert.ToInt32 (Request.QueryString ["id"]);

    int UserID=0;
    for(int i=0;i<this.DataGrid1 .Items .Count ;i++)
    {
    if(this.DataGrid1 .Items [i].ItemType==ListItemType.Item ||this.DataGrid1 .Items [i].ItemType ==ListItemType.AlternatingItem)
    {
    HtmlInputRadioButton _rbSelect=(HtmlInputRadioButton)this.DataGrid1 .Items [i].FindControl ("rbSelect");
    if(_rbSelect.Checked)
    UserID=Convert.ToInt32 (((Label)this.DataGrid1 .Items [i].FindControl ("lblID")).Text);
    }
    }
    if(UserID!=0)
    {
    int BorrowID=(int)SqlHelper.ExecuteScalar(DataConnection.GetConnection (),"xie_borrow_book",BookID,UserID);
    if(BorrowID!=0)
    {
    Response.Write ("<script>alert('成功借出,借阅编号:"+BorrowID.ToString ()+",请记住这次的借阅编号。')</script>");
    }
    else
    {
    if(BorrowID==0)
    Response.Write ("<script>alert('该用户的借书数量已经用完!')</script>");
    else
    Response.Write ("<script>alert('该用户的预存款不足!')</script>"); }
     Response.Write ("<script>window.location.href('book_borrow.aspx')</script>");
    }
    else
    {
       Response.Write ("<script>alert('请选择用户!')</script>");
    }
    }
    catch(Exception ex)
    {
    WebBase.InsertLog (ex.Message .ToString (),"SelectUser",86);
    Response.Write ("<script>alert('服务器忙,请稍后再试!')</script>");
    }
    }
      

  8.   

    那个DataGrid结束标记打错了,DataList是一样的,我测试通过,这个页面中只能选一个,
      

  9.   

    只要设置他们的GroupName为一样的就可以了!
      

  10.   

    aspdotnet2005(红枫) 的有点小错误