我是ASP.NET新手,我在asp.net中使用C#编辑了gridview,我在codeproject中找到了这个可编辑的gridview(Database,Project),但我没有意识到 它的工作特别是这部分代码:`
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView drv = e.Row.DataItem as DataRowView;
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
DropDownList dp= (DropDownList )e.Row .FindControl ("DropDownList1");
DataTable dt = load_department();
for (int i = 0; i < dt.Rows.Count; i++)
{
ListItem lt = new ListItem();
lt.Text = dt.Rows[i][0].ToString();
dp.Items.Add(lt);
}
dp.SelectedValue = drv[3].ToString();
RadioButtonList rbtnl = (RadioButtonList)e.Row.FindControl("RadioButtonList1");
rbtnl.SelectedValue = drv[5].ToString();
CheckBoxList chkb = (CheckBoxList)e.Row.FindControl("CheckBoxList2");
chkb.SelectedValue = drv[6].ToString();
}
}
}
` 为什么她/他这样做?
答案 0 :(得分:4)
将网格绑定到数据源(例如,数据表)时会触发RowDataBound事件。
对于数据表中的每一行,此代码将运行,并将根据该行中的值在网格视图的每一列中放置一个值。
FindControl用于在网格视图的该行上找到具有特定名称的控件 - 请记住,它将重复多次以获得与您一样多的行。
找到控件后,将设置该值。
您正在为数据源中的每一行数据设置网格视图的每一行。
请查看http://msdn.microsoft.com/en-us/magazine/cc163933.aspx,了解此控件背后的意图。
答案 1 :(得分:1)
** RowDataBound当数据行绑定到GridView控件中的数据时发生。
** DataControlRowState指定eg.Edit,Insert,Selected等数据控件中行的状态
** RowState 获取与DataRowCollection关系的行的当前状态。
现在,if condition
填充了Dropdownbox(DropDownList1),RadioButton和Checkebox正在设置他们选择的值。