当前位置:编程学习 > C#/ASP.NET >>

Repeater中实现单选(repeater radiobutton)



上面是效果图;


我用的是Repeater绑定数据,里面有一个radiobutton的单选;

当我点击单选时下面的总价格就跟着改变啊!;

问题是我怎么响应Repeater中的Radiobutton事件呢;   --------------------编程问答-------------------- 首先在Repeater1_ItemCommand获取你选择的id,保存在viewstate中,然后在Repeater1_ItemDataBound事件里面获取这个viewstate,你就可以获取到了! --------------------编程问答-------------------- 你可以在后台写的。。。在前台自己关联。。

 <td> <asp:RadioButton ID="rdb1" runat="server" AutoPostBack="true" oncheckedchanged="RadioButton2_CheckedChanged"/>


protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
}
--------------------编程问答-------------------- --------------------编程问答-------------------- private   void   rpt_ItemCreated(object   sender,   System.Web.UI.WebControls.RepeaterItemEventArgs   e) 

RadioButton   rb=(RadioButton)e.Item.FindControl( "rb "); 
rb.CheckedChanged+=new   EventHandler(rb_CheckedChanged); 

protected   void   rb_CheckedChanged(object   sender,   EventArgs   e) 

RadioButton   rb=sendr as RadioButton;
RepeaterItem item =rb.NamingContainer as RepeaterItem;


} --------------------编程问答-------------------- --------------------编程问答-------------------- 问题是我怎么响应Repeater中的Radiobutton事件呢;
==========================================
如果后台响应,则:
<asp:RadioButton ID="RadioButton1" runat="server"  AutoPostBack="true" oncheckedchanged="RadioButton1_CheckedChanged" />
调用oncheckedchanged事件

如果前台响应,则:
<asp:RadioButton ID="RadioButton1" runat="server" onclick="test(this)" />
调用js的test(this)函数 --------------------编程问答-------------------- 我一般用html控件,js控制。
提交的时候用ajax
--------------------编程问答--------------------
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  DataTable CreateDataSource()
  {
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("id", typeof(Int32)));
    dt.Columns.Add(new DataColumn("text", typeof(string)));
    DataRow dr;
    for (int i = 0; i < 6; i++)
    {
      dr = dt.NewRow();
      dr[0] = i;
      dr[1] = "A,B";
      dt.Rows.Add(dr);
    }
    return dt;
  }
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      Repeater1.DataSource = CreateDataSource();
      Repeater1.DataBind();
    }
  }


</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
  <form id="form1" runat="server">
  <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
      <div><input name='x' value='<%#Eval("id") %>' type="radio" onclick='setValue(this)' /> 测试:<%#Eval("id") %></div>
      
    </ItemTemplate>
  </asp:Repeater>
  <asp:Label ID="lb" runat="server"></asp:Label>
  </form>
  <script>
    function setValue(o) {
      document.getElementById('<%=lb.ClientID %>').innerHTML = o.value;
    }
  </script>
</body>
</html>
--------------------编程问答-------------------- radioButton的实现方法
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  DataTable CreateDataSource()
  {
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("id", typeof(Int32)));
    dt.Columns.Add(new DataColumn("text", typeof(string)));
    DataRow dr;
    for (int i = 0; i < 6; i++)
    {
      dr = dt.NewRow();
      dr[0] = i;
      dr[1] = "A,B";
      dt.Rows.Add(dr);
    }
    return dt;
  }
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      Repeater1.DataSource = CreateDataSource();
      Repeater1.DataBind();
    }
  }


  protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
  {
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
      RadioButton b = e.Item.FindControl("x") as RadioButton;
      b.Attributes.Add("onclick", "setValue(this)");
      b.InputAttributes.Add("oldValue", DataBinder.Eval(e.Item.DataItem,"id").ToString());
    }
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
  <form id="form1" runat="server">
  <div id="ou">
  <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
    <ItemTemplate>
      <div><asp:RadioButton ID="x" runat="server" />测试:<%#Eval("id") %></div>
    </ItemTemplate>
  </asp:Repeater>
  </div>
  <asp:Label ID="lb" runat="server"></asp:Label>
  </form>
  <script>
    function setValue(o) {
      xs = document.getElementById("ou").getElementsByTagName("input")
      for (i = 0; i < xs.length; i++) {
        if (xs[i] != o) xs[i].checked = false;
      }
      document.getElementById('<%=lb.ClientID %>').innerHTML = o.getAttribute("oldValue");
    }
  </script>
</body>
</html>
--------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,