.net2005中对asp.net中GridView的常用操作
1、先绑定数据源
private void fBind()
{
SYJ.sqlServer f = new SYJ.sqlServer(SYJ.common.gDbConnStr(""));
string strF = "select * from tFunctionWeb";
DataSet ds = f.sqlSelectDS(strF);
ViewState["dsPage"] = ds; //这在后面的分页中用到;
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
2、分页事件
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
this.GridView1.DataSource = ViewState["dsPage"];
this.GridView1.DataBind();
}
3、删除事件
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
SYJ.sqlServer f = new SYJ.sqlServer(SYJ.common.gDbConnStr(""));
int fid = int.Parse(this.GridView1.DataKeys[e.RowIndex].Values[0].ToString());
string strF = "delete from tFunctionWeb where fid="+fid;
//string strF2 = "delete from ";
if (f.sqlInsertUpdateDelete(strF) > 0)
{
SYJ.common.msgBox(this, "删除成功!");
}
else
{
SYJ.common.msgBox(this, "对不起,删除失败!");
}
this.fBind();
}
4、删除确认框事件
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[e.Row.Cells.Count - 1].Attributes.Add("onclick", "return confirm('确定要永久删除该功能页面吗?');");
}
}
/// <summary>
/// (编辑)取消事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
this.fBind();
}
/// <summary>
/// 编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
this.fBind();
}
/// <summary>
/// (编辑)更新事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
SYJ.sqlServer update = new SYJ.sqlServer(SYJ.common.gDbConnStr(""));
// string RegName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("tbRegName")).Text.Trim(); /*需要插入模板列,比较麻烦*/
TextBox tbRegName = (TextBox)this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0];//通过找到编辑所在行的列数即可
string RegName2 = tbRegName.Text;
if (!string.IsNullOrEmpty(RegName2))
{
StringBuilder strsql = new StringBuilder("UPDATE ai_ObjComm SET RegName='")
.Append(RegName2)
.Append("'")
.Append(" WHERE ID='")
.Append(GridView1.DataKeys[e.RowIndex].Value)
.Append("'");
try
{
update.sqlInsertUpdateDelete(strsql.ToString());
GridView1.EditIndex = -1;
fBind();
Response.Write("<script>alert('信息更新成功');</script>");
}
catch (Exception ex)
{
string message = "修改车辆资料失败,详细信息是:"+ex.Message.Replace("\r\n", "");
Response.Write("<script>alert(message);</script>");
}
}
else
{
Response.Write("<script>alert('车牌号码不能为空,请重新输入');</script>");
}
}
/// <summary>
/// 我们可能要根据需要,对gridview中的数据进行特殊的显示,比如当某样商品库存为0时,要求gridview中以不同颜色进行显示,这时,可以按如下的方法进行:
/// 首先,gridview提供了rowdatabound事件,该事件在gridview中每行被创建并且绑定到datasource控件后被触发,因此,我们可以利用该事件去检查库存是否为0,如果为0的话,将所在行的北京颜色设置为黄色,
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int isHaveLock = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "isHaveLock"));
if (isHaveLock == 0)
e.Row.BackColor = Color.Yellow;
}
}