1.首先
protected void gv_Road_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbtn =(LinkButton)e.Row.Cells[0].FindControl("lbtn_roadname");
lbtn.CommandArgument = e.Row.RowIndex.ToString();
}
}
就是gridView中的rowcreate()函数中为控件进行上述注册
2.其次
}
protected void gv_Road_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowindex = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "lb")
{
//DataSet ds = ETC.DAL.SQLHelper.GetDataSet("SELECT plaza_name,temp.plaza_no,temp.ex_lane_id FROM plaza INNER JOIN (SELECT ex_plaza_no,ex_lane_id FROM card_transaction WHERE trans_time>='"+this.getTodayTime()+"' AND trans_time<'"+this.getTodayTime().AddDays(1)+"' AND ex_plaza_no IN (SELECT plaza_no FROM plaza WHERE plaza_id IN (SELECT plaza_id FROM road WHERE road_name='"+((LinkButton)this.gv_Road.Rows[rowindex].Cells[0].FindControl("lbtn_roadname")).Text+"')) group by ex_plaza_no,ex_lane_id) AS temp ON temp.ex_plaza_no=plaza.plaza_no");
DataSet ds = ETC.DAL.SQLHelper.GetDataSet("SELECT plaza_name,temp.ex_plaza_no,temp.ex_lane_id"+
" FROM plaza INNER JOIN (SELECT ex_plaza_no,ex_lane_id FROM card_transaction WHERE"+
" trans_time>='" + this.getTodayTime() + "' AND trans_time<'" + this.getTodayTime().AddDays(1) + "' "+
"AND ex_plaza_no IN (SELECT plaza_no FROM plaza WHERE plaza_id IN (SELECT plaza_id FROM road WHERE"+
" road_name='" + ((LinkButton)this.gv_Road.Rows[rowindex].Cells[0].FindControl("lbtn_roadname")).Text + "')) "+
"group by ex_plaza_no,ex_lane_id) AS temp ON temp.ex_plaza_no=plaza.plaza_no");
if (ds == null || ds.Tables[0].Rows.Count <= 0)
ds = null;
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
}
也就是说在gridView控件的rowCommand函数中添加上述代码,最关键的就是获得触发的行索引
还有一个地方需要注意的就是:关于一些控件的text属性值得获得,有时< text='234'><>
有时需要。<>'234'<>