我前台用input checkbox
想根据后台数据库里的值进行赋值。
而input checkbox的值也是从数据库里读取出来的。
以下是部分代码`   谢谢各位了`前台input checkbox取值
<div id="divPersons" class="list">
    <asp:Repeater ID="RepeaterCourses" runat="server">
        <ItemTemplate>
            <div>
                <input id="checkbox" name="checkbox" type="checkbox" value='<%#Eval("pname")%>' /><%#Eval("pname")%></div>
        </ItemTemplate>
    </asp:Repeater>
</div>
后台    public string checkTemp = "";  //临时存储变量
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Repeater_Bind();           
            if (Request.QueryString["reg"] == "3")
            {
                 //对前台的input checkbox赋值。!!!这里赋值在前台不好使。`
                 checkTemp = Request.Cookies["pname"].Value;            
            }
        }
    }
    public void Repeater_Bind()
    {   
        //前台的input checkbox赋值。
        DataTable dt = db.GetDataTable("select pname from tb_pir");
        RepeaterCourses.DataSource = dt;
        RepeaterCourses.DataBind();
    }
    protected void btNext_Click(object sender, EventArgs e)
    {
        //点击按钮获取前台input checkbox的值 存储到临时COOKIES
        if (Request.Form["checkbox"] == null)
        {
            Response.Cookies["pname"].Value = Request.Form["checkbox"];
        }
    }
这就是基本代码 。还有什么不明白的可以加我QQ问我。`49813003.。
谢谢各位了`。。不好意思大过年的还要各位帮忙。。现在的问题就是我进入这个页。页面的值可以取出来。`但是  把COOKIES的值不能赋给input checkbox这是我所有的分了`。

解决方案 »

  1.   

    http://topic.csdn.net/u/20110202/02/0dc138de-d69d-4282-9349-ebc39e03f044.html感谢net_lover、wuyq11 两位。用了 net_lover的方法测试可以。可是用cookies就不好使了` 郁闷死了`。
      

  2.   

    <%# 属性%>
    public string checkTemp {get;set;}
    通过 cookie给属性赋值
      

  3.   

    你那个checkbox是在Repeater里面,也就是生成页面的时候可能会有多个checkbox,Response.Cookies["pname"].Value = Request.Form["checkbox"];你这一句他怎么知道要拿哪个呢?为什么不用服务器端控件呢?
      

  4.   

    数据绑定要使用服务端控件,html的控件要加入runat="server"属性。
      

  5.   

    控件中的chekbox得要findcontrol的
      

  6.   

    private CheckBox1 CheckBox;
        protected void Page_Load(object sender, EventArgs e)
        {
            CheckBox1 = (CheckBox)this.RepeaterCourses.FindControl("CheckBox");
    .............
         }
      

  7.   

    服务器端控件生成的还不是checkbox?不管是是服务器端控件,还是input checkbox,到了客户端还不是一个摸样?
      

  8.   

    这个是DIV的CSS样式。` 各位。`  复制过去就能用程序试验`。。帮弄弄。`谢谢各位了`。郁闷死了`。。困扰好几天了`.list
            {
                overflow-y: scroll;
                width: 120px;
                height: 150px;
                padding: 3px;
                border: solid 1px #AFAFAF;
                background-color: #ffffff;
                cursor: pointer;
            }
      

  9.   

    控件里面最好用服务器控件,在后台可以findcontrol 方便操作。
      

  10.   

    up
    问题没解决`  服务器控件用到repeater里显示ID重复错误。。
    如果你知道怎么用请说明白。`谢谢。
      

  11.   

    你的ID后根上你的数据库ID号 <input id='checkbox<%#Eval("pname")%>' name="checkbox" type="checkbox" value='<%#Eval("pname")%>' />
      

  12.   

    你的ID后根上你的数据库ID号 <input id='checkbox<%#Eval("id")%>' name="checkbox" type="checkbox" value='<%#Eval("pname")%>' />
      

  13.   

    有几处错误
    1,if (Request.Form["checkbox"] == null)
    改成if (Request.Form["checkbox"] != null)
        {
          Response.Cookies["pname"].Value = Server.UrlEncode(Request.Form["checkbox"]);
        }2,改成if (!Page.IsPostBack)
        {
          if (Request.QueryString["reg"] == "3")
          {        //对前台的input checkbox赋值。!!!这里赋值在前台不好使。`
            if (Request.Cookies["pname"] != null)
            {
              checkTemp = Server.UrlDecode(Request.Cookies["pname"].Value);          String[] data = checkTemp.Split(',');
              DataTable ht = new DataTable();
              DataRow dr;
              ht.Columns.Add(new DataColumn("pname", typeof(System.String)));          for (int i = 0; i < data.Length; i++)
              {
                dr = ht.NewRow();
                dr[0] = data[i];
                ht.Rows.Add(dr);
              }
              RepeaterCourses.DataSource = ht;
              RepeaterCourses.DataBind();
            }
          }
          else
          {
            Repeater_Bind();
          }
        }
      

  14.   

    下面完整的测试源代码[code=HTM]<%@ 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">
      public string checkTemp = "";  //临时存储变量
      protected void Page_Load(object sender, EventArgs e)
      {
        if (!Page.IsPostBack)
        {
          if (Request.QueryString["reg"] == "3")
          {        //对前台的input checkbox赋值。!!!这里赋值在前台不好使。`
            if (Request.Cookies["pname"] != null)
            {
              checkTemp = Server.UrlDecode(Request.Cookies["pname"].Value);          String[] data = checkTemp.Split(',');
              DataTable ht = new DataTable();
              DataRow dr;
              ht.Columns.Add(new DataColumn("pname", typeof(System.String)));          for (int i = 0; i < data.Length; i++)
              {
                dr = ht.NewRow();
                dr[0] = data[i];
                ht.Rows.Add(dr);
              }
              RepeaterCourses.DataSource = ht;
              RepeaterCourses.DataBind();
            }
          }
          else
          {
            Repeater_Bind();
          }
        }
      }
      public void Repeater_Bind()
      {
        //前台的input checkbox赋值。
        DataTable dt = db.GetDataTable("select pname from tb_pir");
        RepeaterCourses.DataSource = dt;
        RepeaterCourses.DataBind();
      }
      protected void btNext_Click(object sender, EventArgs e)
      {
        //点击按钮获取前台input checkbox的值 存储到临时COOKIES
        if (Request.Form["checkbox"] != null)
        {
          Response.Cookies["pname"].Value = Server.UrlEncode(Request.Form["checkbox"]);
        }
        Response.Redirect(Request.FilePath + "?reg=3");
      }  /// <summary>
      /// 为示例方便,以下代码只是模拟你的 db.GetDataTable("select pname from tb_pir");
      /// </summary>
      public static class db
      {
        public static DataTable GetDataTable(string sql)
        {
          System.Data.DataTable dt = new System.Data.DataTable();
          System.Data.DataRow dr;
          dt.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
          dt.Columns.Add(new System.Data.DataColumn("pname", typeof(System.String)));      System.Random rd = new System.Random();
          for (int i = 1; i < 10; i++)
          {
            dr = dt.NewRow();
            dr[0] = i;
            dr[1] = "【孟子E章】" + i.ToString();
            dt.Rows.Add(dr);
          }
          return dt;
        }
      }</script><html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <div id="divPersons" class="list">
        <asp:Repeater ID="RepeaterCourses" runat="server">
          <ItemTemplate>
            <div>
              <input name="checkbox" type="checkbox" value='<%#Eval("pname")%>' /><%#Eval("pname")%></div>
          </ItemTemplate>
        </asp:Repeater>
      </div>
      <asp:Button ID="Button1" runat="server" OnClick="btNext_Click" Text="Next" />
      </form>
    </body>
    </html>
    [/code]
      

  15.   

    你在 页面上用js获得checkbox的值 然后 跳转到 这个页面,把 获得的 checkbox 的值作为跳转路径的参数 传递过去 , 然后  获得 参数值   并且放到 cookies 里面  不就好了