首页  ·  知识 ·  云计算
gridView在RowDataBound事件中做一些工作
网友     综合  编辑:dezai   图片来源:网络
1. Cells[x].Txt。 从列单元格的文本值获取。这种方法简单高率,最为常用,但是功能单纯。此法存在几个缺点:

1. Cells[x].Txt。
从列单元格的文本值获取。这种方法简单高率,最为常用,但是功能单纯。此法存在几个缺点:
(1)无法获取到设置了隐藏属性的数据列的值,所取到的值为“”(空)。
(2)只能获取在HTML中定义过的数据列,无法查询数据源中的当前数据行的所有字段列。一般情况下,通过HTML设置GridView的字段列的数量往往小于数据源的实际字段数量,这是因为从业务逻辑的角度看,并不是所有的字段都是要显示在页面上的。当需要使用没有被显示的字段时,此法就不能直接满足需求了。

 

 

2. e.Row.Cells[x].FindControl("YourcontrolName")。
这是在单元格内查找某个服务器控件,从而获得其数据值。这种方式可以操作单元格内的服务器控件。此法一般用于处理模板列中的数据或控件。

3. (DataRowView)e.Row.DataItem).Row.ItemArray[x].ToString()。
此法的核心是e.Row.DataItem,它是GridView的行数据集,为Object类型,将其转化为DataRowView类型后,可以获得更多的操作方法。此数据集表示数据源当前行的全部字段列,ItemArray[x]是当前行全部字段列的数组对象,可以通过索引x获得任意字段值。此法的强悍之处是可以对数据源的全部字段查询。

4. DataBinder.Eval(e.Row.DataItem, "YourDataFieldName").ToString()。
此法仍然基于e.Row.DataItem,其特点是更快捷的获得数据源的任意字段值,因为使用了DataBinder.Eval(),需要注意的是不要写错字段名称。 软件开发网 www.mscto.com

5. 将e.Row.DataItem转化为自定义类型,实现数据类型化。
例如:
DSRequestTracking.TB_RequestTrackingRow rtrow=(DSRequestTracking.TB_RequestTrackingRow)((DataRowView)e.Row.DataItem).Row;
RequestStatusDropDownList1.SelectedValue = rtrow.StatusID.ToString();
其中DSRequestTracking是通过DSRequestTracking.xsd文件在工程中自定义的强类型DataSet, TB_RequestTrackingRow是VS自动为此强类型生成的创建数据行对象的方法。通过此法,实现了类型化数据的广泛应用。数据类型化的好处很多,显而易见的便是传一个类型数据给方法,取代一大堆参数,另外就是再也不会发生字段名拼写错误的情况。

 

GridView————绑定GridView时(RowDataBound)添加一些样式

/// <summary>
/// 绑定GridView时(RowDataBound)添加一些属性
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

//行单元格从0开始数

if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "yes=this.style.backgroundColor; this.style.backgroundColor='red'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=yes");

//获取绑定行的book对象
Book book = (Book)e.Row.DataItem;

//给 价格 的单元格添加color颜色
if (book.UnitPrice < 80)
{
e.Row.Cells[8].Attributes.Add("style", "color:green");
// e.Row.Cells[6].Text = "便宜";
}
else if (book.UnitPrice < 200)
{
e.Row.Cells[8].Attributes.Add("style", "color:yellow");
}
else
{
e.Row.Cells[8].Attributes.Add("style", "color:red");
}
this.sumPrice += Convert.ToSByte(book.UnitPrice); //累加价格(方便计算平均价格)

//序号1,2,3......
String num = Convert.ToString(e.Row.RowIndex + 1);
e.Row.Cells[0].Text = num;

//判断内容的字数是否大于20,如果大于,就是只显示20个字符+....
if (book.ContentDescription.Length > 20)
{
e.Row.Cells[5].Text = book.ContentDescription.Substring(0, 20) + "...";
}


//隐藏列

// e.Row.Cells[6].Attributes.Add("style", "display:none"); //隐藏数据列

}
else if (e.Row.RowType == DataControlRowType.Footer) //判断是不是脚注行
{

e.Row.Cells[7].Text = "均价";
float avgPrice = sumPrice / this.gvBook.Rows.Count; //注:Rows不包含标头行和脚注行
String money = String.Format("{0:C2}", avgPrice); //格式化均价(以货币的形式显示)
e.Row.Cells[8].Text = money;

}

}

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读