这个代码(或项目)是如何工作的?(可编辑的ASP Gridview)

本文关键字:工作 编辑 Gridview ASP 代码 项目 何工作 | 更新日期: 2023-09-27 18:16:15

我是ASP新手。. NET,我会使用c#在asp.net中编辑gridview,我在codeproject中发现了这个可编辑的gridview(数据库,项目),但我没有意识到如何它的工作特别是这部分代码:'

    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();    
          }              
       }
   }

'她/他为什么要这么做?

这个代码(或项目)是如何工作的?(可编辑的ASP Gridview)

RowDataBound事件在您将网格绑定到数据源(例如,数据表)时触发。

对于数据表中的每一行,该代码将运行,并且将根据该行中的值在网格视图的每一列中放置一个值。

FindControl用于在网格视图的那一行中查找具有特定名称的控件——请记住,对于您拥有的行数,它将重复多次。

一旦找到控件,就设置该值。

您正在为数据源中的每一行数据有效地设置网格视图的每一行。

请查看http://msdn.microsoft.com/en-us/magazine/cc163933.aspx,了解此控件背后的意图。

** RowDataBound当数据行绑定到GridView控件中的数据时发生。

**DataControlRowState指定数据控件中某一行的状态。编辑、插入、选择等

** RowState获取该行与DataRowCollection的关系的当前状态。

现在在if condition中,你的下拉框(DropDownList1)被填充,RadioButton和checkbox正在设置他们的选择值