aspDataGridGridView表格之选中⾏与获取选中⾏数据
⼀、GridView 表格之选中⾏
asp选中⾏的功能最初以为只能通过属性中AllowGenerateSelectButton(运⾏时是否⾃动⽣成选择按钮)来实现,需要点击⽣成的选择按钮来操作,但这样使⽤并是很⽅便。
经寻到了改进办法如下效果
⿏标经过时背景⾊会改变,选中后可获取响应⾏的数据
实现⽅法如下:
⾸先前台设计属性框中事件绑定RowDataBound(在对时局进⾏了绑定后激发)事件
后台代码如下:
///<summary>
///在对数据进⾏了绑定后激发
///主要实现⿏标点击时选中该⾏
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
#region⽅法0 存在bug 暂未改进供参考
//e.Row.Attributes["style"] = "cursor:hand";
/
/PostBackOptions myPostBackOptions = new PostBackOptions(this);
//myPostBackOptions.AutoPostBack = false;
//myPostBackOptions.PerformValidation = false;
//myPostBackOptions.RequiresJavaScriptProtocol = true; //加⼊javascript:头
//String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "Select$" + e.Row.RowIndex.ToString());
//e.Row.Attributes.Add("onclick", evt);
#endregion
#region⽅法1
//if (e.Row.RowType == DataControlRowType.DataRow)
//{
/
/ e.Row.Attributes.Add("onClick", "__doPostBack('" + GridView1.UniqueID + "','Select$" + e.Row.RowIndex + "');");//此处为两个“_” //}
#endregion
#region⽅法2
int i;
for (i = 0; i <= GridView1.Rows.Count; i++)
{
//⾸先判断是否是数据⾏
if (e.Row.RowType == DataControlRowType.DataRow)
{
//当⿏标停留时更改背景⾊
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");
//当⿏标移开时还原背景⾊
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
//单击⾏的任意列会⾃动选中此⾏
e.Row.Attributes.Add("onclick", "__doPostBack('GridView1','Select$" + e.Row.RowIndex + "')");
}
}
#endregion
⼆、获取选中⾏数据
选中某⾏后获取数据
在属性框中事件选项中选择设置SelectedIndexChanged(在GridView中选择⾏时,在该⾏选择完成后激发)事件选项后台代码如下gridview不显示
///<summary>
///选择某⾏时在最左侧更新显⽰数据详细
///在DataGriew选择⾏时,在该选择操作完成后激发
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (GridView1.SelectedIndex >= 0)
{
ClearTreeNodeChecked(TreeView1.Nodes);
txtName.Text = GridView1.SelectedRow.Cells[0].Text;
txtPhone.Text = GridView1.SelectedRow.Cells[1].Text;
txtSendTime.Text = GridView1.SelectedRow.Cells[2].Text;
GetUserNodes();
}
}
如果单独设置了修改或删除按钮,选中某⾏后,点击这些按钮来处理数据,可通过定义⼀些页⾯属性来保存当前⾏选中的列数据,
在每次选中⾏改变SelectedIndexChanged事件中更改这些定义的表⽰⾏列数据的属性,然后利⽤这些列数据进⾏操作
⾸先定义页⾯属性
///<summary>
///选中⾏的代码列
///</summary>
private static string Code = "";
///<summary>
///选中⾏的名字列
///</summary>
private static string Name = "";
///<summary>
///选中⾏的描述列
/
//</summary>
private static string Descripe = "";
在每次选中⾏触发SelectedIndexChanged事件时更改这些属性的值
///<summary>
///⾏选择操作完成后激发
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void grdQualityDoorAndParts_SelectedIndexChanged(object sender, EventArgs e)
{
//当选中⾏时
if (grdQualityDoorAndParts.SelectedIndex >= 0)
{
btnEdit.Enabled = true;//启⽤编辑按钮
btnDelete.Enabled = true;//启⽤删除按钮
Code = grdQualityDoorAndParts.SelectedRow.Cells[0].Text.Trim().ToString() == " " ? "" : grdQualityDoorAndParts.SelectedRow.Cells[0].Text.Trim().ToString();
Name = grdQualityDoorAndParts.SelectedRow.Cells[1].Text.Trim().ToString() == " " ? "" : grdQualityDoorAndParts.SelectedRow.Cells[1].Text.Trim().ToString(); Descripe = grdQualityDoorAndParts.SelectedRow.Cells[2].Text.Trim().ToString() == " " ? "" : grdQualityDoorAndParts.SelectedRow.Cells[2].Text.Trim().ToString();
//给编辑按钮添加点击事件,跳转到编辑页⾯,并传值过去(在这⾥将名称列的值传给编辑界⾯)
string url1 = "Edit.aspx/?Name=" + Name;
btnEdit.Attributes.Add("onclick", "window.showModalDialog('" + url1 + "',window,'dialogHeight:550px;dialogWidth:800px'); return false;");
}
else
{
btnEdit.Enabled = false;//启⽤编辑按钮
btnDelete.Enabled = false;//启⽤删除按钮
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论