在GridView中插入行

本文介绍了一个使用ASP.NET中GridView控件实现数据插入的方法。通过一个具体的示例展示了如何在GridView中插入新行,并更新数据源,保持数据的正确排序。
GridView是个功能强大的控件,有时侯,我们用它来装载多行数据并编辑,最后再批量更新。在编辑时,很可能会需要在其中插入一些行用于添加新的数据,下面提供一个示例以演示实现的基本方法。
  页面文件:
<formid="form1"runat="server">
<div>
<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="line"OnSelectedIndexChanging="GridView1_SelectedIndexChanging">
<Columns>
<asp:CommandFieldHeaderText="插入"SelectText="插入行"ShowSelectButton="True"/>
<asp:TemplateFieldHeaderText="yy">
<ItemTemplate>
<asp:TextBoxID="TextBox1"runat="server"Text='<%#DataBinder.Eval(Container.DataItem,"yy")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

</div>
</form>

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

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

protectedvoidPage_Load(objectsender,EventArgse)
...{
if(!Page.IsPostBack)
...{
BindData();
}


}


//创建一个表
privateDataTableCreateTable()
...{
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;
}


protectedvoidGridView1_SelectedIndexChanging(objectsender,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();

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值