在GridView中插入行

GridView是个功能强大的控件,有时侯,我们用它来装载多行数据并编辑,最后再批量更新。在编辑时,很可能会需要在其中插入一些行用于添加新的数据,下面提供一个示例以演示实现的基本方法。
  页面文件:
< form id ="form1" runat ="server" >
< div >
< asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="False" DataKeyNames ="line" OnSelectedIndexChanging ="GridView1_SelectedIndexChanging" >
< Columns >
< asp:CommandField HeaderText ="插入" SelectText ="插入行" ShowSelectButton ="True" />
< asp:TemplateField HeaderText ="yy" >
< ItemTemplate >
< asp:TextBox ID ="TextBox1" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem,"yy") % > '> </ asp:TextBox >
</ ItemTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >

</ div >
</ form >

  代码文件:
// 初始化数据
private void BindData()
... {
DataTabledt
=CreateTable();
DataRowdr
=dt.NewRow();
dr[
"yy"]="hello";
dr[
"line"]=0;
dt.Rows.Add(dr);

GridView1.DataSource
=dt.DefaultView;
GridView1.DataBind();
}

protected void Page_Load( object sender,EventArgse)
... {
if(!Page.IsPostBack)
...{
BindData();
}


}


// 创建一个表
private DataTableCreateTable()
... {
DataTabledt
=newDataTable("mytable");

DataColumndc
=newDataColumn("yy",System.Type.GetType("System.String"));
dt.Columns.Add(dc);

dc
=newDataColumn("line",System.Type.GetType("System.Int32"));
dt.Columns.Add(dc);

returndt;
}


protected void GridView1_SelectedIndexChanging( object sender,GridViewSelectEventArgse)
... {
DataTabledt
=CreateTable();
foreach(GridViewRowgvrinGridView1.Rows)
...{
if(e.NewSelectedIndex==int.Parse(GridView1.DataKeys[gvr.RowIndex][0].ToString()))//插入行的位置
...{
DataRowdr
=dt.NewRow();
dr[
"yy"]="";
dr[
"line"]=e.NewSelectedIndex;
dt.Rows.Add(dr);

dr
=dt.NewRow();
TextBoxtb
=(TextBox)gvr.Cells[1].FindControl("TextBox1");
dr[
"yy"]=tb.Text;
dr[
"line"]=e.NewSelectedIndex+1;
dt.Rows.Add(dr);
}

elseif(e.NewSelectedIndex<int.Parse(GridView1.DataKeys[gvr.RowIndex][0].ToString()))//插入行之后
...{
DataRowdr
=dt.NewRow();
TextBoxtb
=(TextBox)gvr.Cells[1].FindControl("TextBox1");
dr[
"yy"]=tb.Text;
dr[
"line"]=int.Parse(GridView1.DataKeys[gvr.RowIndex][0].ToString())+1;
dt.Rows.Add(dr);
}

else//插入行之前
...{
DataRowdr
=dt.NewRow();
TextBoxtb
=(TextBox)gvr.Cells[1].FindControl("TextBox1");
dr[
"yy"]=tb.Text;
dr[
"line"]=GridView1.DataKeys[gvr.RowIndex][0].ToString();
dt.Rows.Add(dr);
}

}


//重新绑定
DataViewdv=dt.DefaultView;
dv.Sort
="line";//指定排序字段
GridView1.DataSource=dv;
GridView1.DataBind();

}

你可能感兴趣的:(GridView)