asp.net中templatefield 和 buttonfield有什么区别

来源:百度知道 编辑:UC知道 时间:2024/06/20 04:39:37
刚刚学asp.net,现在在学习gridview,想问问templatefield 和 buttonfield有什么区别。谢高人指教。

按钮可以使用两种方法生成,ButtonField和TemplateField。
个人认为,用TemplateField生成更有灵活性,但是代码更复杂。
CommandArgument在使用ButtonField的时候是不能被显式设置的,应为没有这个属性,在代码中,RowCommand中可以用e.CommandArgument得到的是行号,即RowIndex,不同的是如果使用TemplateField就必须显式,否则得到的是空字符串(注:返回的类型虽然是object,但是不是返回null,有点不理解)。
要在TemplateField中得到RowIndex就需要在RowCreate事件中加入: if (e.Row.RowType == DataControlRowType.DataRow)
{

//获得控件实例,即在TemplateField里面的按钮
LinkButton lbtnUpdate = e.Row.FindControl("lbtnUpdate") as LinkButton;

//设置CommandArgument
lbtnUpdate.CommandArgument = e.Row.RowIndex.ToString();
}

通过上面的设置就可以得到RowIndex,当然,并不是所有的事件都需要得到RowIndex,可以按照需要设置。