要求显示一张数据表,用不用dataGrid都行,在显示的第一列,加上一列CheckBox,要求:
1. 能分页;
2. 在onmouseover(黄)和onmouseout(变回原来)的时候,有行变色;
3. 选中CheckBox的时候,行变色(兰);
4. CheckBox选中的时候,onmouseover、onmouseout后仍然为蓝色,或onmouseover、onmouseout不变色;
5. 翻页时CheckBox保留状态,CheckBox所在的行保持兰色
我痛苦了一天,给个思路就行
1. 能分页;
2. 在onmouseover(黄)和onmouseout(变回原来)的时候,有行变色;
3. 选中CheckBox的时候,行变色(兰);
4. CheckBox选中的时候,onmouseover、onmouseout后仍然为蓝色,或onmouseover、onmouseout不变色;
5. 翻页时CheckBox保留状态,CheckBox所在的行保持兰色
我痛苦了一天,给个思路就行
解决方案 »
- 请问asp.net中有没有winfrom里面那样的TAB控件
- treeview
- 求教一个Membership提供程序配置问题
- 应用在asp.net 上的 JS 倒计时(时分秒) 求一个实例
- 问个javascript 问题
- !!紧急求救,帮我看看这段错误信息,告诉我是什么原因,谢谢.
- 这个地铁地图是怎么实现的?谢谢
- 初学者求助:如何将连接数据库代码段编写到类里面(采用VB编写),如何在页面中引用.
- 命名空间问题
- 连接oracle问题,进来就有分
- Repeater控件中有些行中某列需要链接而有些行中这列不需要链接,如何实现?
- 我在webform中放如一个usercontrol,可是在Codebehind中访问他会报NullRefrence错
用DataGrid,一般的分页不就可以?不过这样好像性能不好。
2,3,4
在ItemDataBind里面去给每行绑定Attributes啊。给CheckBox绑定Attributes。
2、这个也好做,设一设style。
3、选择中CheckBox时,行变色,将DataGrid的行设一设style。
4、这个同上。
5、翻页时CheckBox保留状态,我觉得没必要。你翻页后记录都不同了,有必要保留状态吗?
给你的思路就是
像这样
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
那么你在javascript怎么判断所在行的CheckBox是否选中了呢??
你如果不判断,那么选中的行本来是蓝色,鼠标一经过就又变回来了,你们怎么不明白???另外关于第五条,需求自然有需求的道理。
但时要一起实现就有困难,因为要求选中的checkbox的所在行,onmouseover和onmouseout要区别对待希望各位高手不要想当然,自己动手试一下。
分页可以用自带的啊。很简单的。
自己分页也可。不多说了,一搜CSDN里一大堆啊。
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 }
}
至于别人给的方法,合不合你意?
我想没有人会愿意白白浪费自己的时间来给你吹水
谅解一下吧!
大家都是相互学习!