要求显示一张数据表,用不用dataGrid都行,在显示的第一列,加上一列CheckBox,要求:
1.   能分页;
2.   在onmouseover(黄)和onmouseout(变回原来)的时候,有行变色;
3.   选中CheckBox的时候,行变色(兰);
4.  CheckBox选中的时候,onmouseover、onmouseout后仍然为蓝色,或onmouseover、onmouseout不变色;
5.  翻页时CheckBox保留状态,CheckBox所在的行保持兰色
 我痛苦了一天,给个思路就行

解决方案 »

  1.   

    1
    用DataGrid,一般的分页不就可以?不过这样好像性能不好。
    2,3,4
    在ItemDataBind里面去给每行绑定Attributes啊。给CheckBox绑定Attributes。
      

  2.   

    1、分页,这个不难,如果数据量大还可以用存储过程实现。
    2、这个也好做,设一设style。
    3、选择中CheckBox时,行变色,将DataGrid的行设一设style。
    4、这个同上。
    5、翻页时CheckBox保留状态,我觉得没必要。你翻页后记录都不同了,有必要保留状态吗?
      

  3.   

    用javascript都能解决了
    给你的思路就是
    像这样
        Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            e.Item.Attributes("OnClick") = "setCurrent(" + (e.Item.ItemIndex + 1).ToString + ")"
        End Sub
      

  4.   

    老兄,你做一下就知道了!!!Attributes里加的onmouseover和onmouseout事件肯定要写在javascript里
    那么你在javascript怎么判断所在行的CheckBox是否选中了呢??
    你如果不判断,那么选中的行本来是蓝色,鼠标一经过就又变回来了,你们怎么不明白???另外关于第五条,需求自然有需求的道理。
      

  5.   

    如果只是分页,设置一些行属性,我也没必要来问了其实现在的问题就是在javascript中怎么能访问到所在行中的CheckBox的状态!
      

  6.   

    选中checkbox时所在行变蓝,鼠标经过时行变色,单独实现起来都很简单,
    但时要一起实现就有困难,因为要求选中的checkbox的所在行,onmouseover和onmouseout要区别对待希望各位高手不要想当然,自己动手试一下。
      

  7.   

    能说一下如何在javascript中设置Datagride的对象记录的背景色
      

  8.   

    变颜色要在客户端弄。就用JS可以了。
    分页可以用自带的啊。很简单的。
    自己分页也可。不多说了,一搜CSDN里一大堆啊。
      

  9.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=FF130C7F-3650-4DA6-8943-8AA4AF3E3459http://dev.csdn.net/develop/article/26/26768.shtm
      

  10.   

    csdn真可笑,一帮人问题都看不明白还都一个个这么多星,时间都用在灌水上了吧???
      

  11.   

    实现夸页面实现多选,这是孟子里面的代码
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.OleDb;
    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 eMeng.Exam
    {
    /// <summary>
    /// SelectMultiPages 的摘要说明。
    /// </summary>
    public class SelectMultiPages : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.HtmlControls.HtmlInputHidden HdnSelectedValues;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!Page.IsPostBack)
    BindData();
    }
    private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
    DataGrid1.CurrentPageIndex = e.NewPageIndex;
    BindData(); 
    }void BindData()
    {
    OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
    + HttpContext.Current.Server.MapPath("aspx.mdb"));
    OleDbDataAdapter da = new OleDbDataAdapter("Select Title, CreateDate from Document",cn);
    DataSet ds = new DataSet();
    da.Fill(ds);
    DataGrid1.DataSource= ds;
    DataGrid1.DataBind();
    }private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    //重新显示所选择的项目
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    if(HdnSelectedValues.Value.IndexOf(((Literal)e.Item.Cells[1].FindControl("TitleShow")).Text) >= 0 )
    {
    HtmlInputCheckBox ChkSelected = (HtmlInputCheckBox)(e.Item.Cells[0].FindControl("ChkSelect"));
    ChkSelected.Checked = true;
    }
    }
    }
    private void Button1_Click(object sender, System.EventArgs e)
    {
    //为了显示的方便进行替换的
    Label1.Text = HdnSelectedValues.Value.Replace(",","<li>");
    }#region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }/// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DataGrid1.ItemDataBound += 
    new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
    this.DataGrid1.PageIndexChanged += 
    new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load);}
    #endregion }
    }
      

  12.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=F43AF9A5-2C2E-4AA6-E976-21E9569F5A8A
    至于别人给的方法,合不合你意?
    我想没有人会愿意白白浪费自己的时间来给你吹水
    谅解一下吧!
    大家都是相互学习!
      

  13.   

    我一般是用DataList,不知道你那个checkbox要不要实现单选,要是单选就要麻烦点.
      

  14.   

    楼主说的对,上边有几个人是没有考虑一些细节的地方,可能都是大体上知道如何解决,但实际上去解决时候就有些问题了。我给你一些建议。1。checkbox 的状态 在你翻页的时候就要存到一个地方,我经常做的存到datasource里边去。下次你再bind datasource 的时候,根据你的datasource里边的数据,就是你存下来的那个checkbox 状态的数值,来还原每行的颜色。这个在ItemDataBound里边做,我想你应该会。2。关于用户在客户端可能点击你的checkbox, 那么onmouseover 等的颜色就变化了,因为这个时候还没有postback,所以不可能用服务器端的处理,一定要用js。 关键问题就是你的onmouseover,和onmouseout 的javascript要知道当前的checkbox的客户端的id,那样就用js来取得checkbox的状态,根据这个状态来换颜色。那么你的onmouseover 和onmouseout的javascript的function 在datagrid的itemdatabound中就要把当前行的checkbox的clientID 给传下去。这样不就可以了。
      

  15.   

    思路而已啊:.Attributes("onmouseover等") = "document.Form1."+.ClientID.Tostring()+"。"在服务器端获得这个控件生成的客户端的ID,作为字符串写下去,估计可以。没有试过,你自己觉得有道理的话试下,觉得没道理当我没说。