使用gridview批量录入数据 使用gridview批量录入数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是批量导入吧!!是不是把gridview里的数据导入到SQL 如何使用gridview批量录入数据 实现如下功能:在编辑界面中,点击 添加 gridview表格会自动增加一个空行!!!用户可以在空行中录入各列的数据。可以添加多行!!!点击 保存 会将录入的数据批量添加到数据库!同时也可以批量修改表格中显示的数据!!! 用DetailsView结合GridView可以达到楼主的目的不过你要让SqlDataSource自动生成Insert、Delete、Update的语句 不用gridview,点击添加,则产生一个服务器运行的table,样式和列数做的和上面的gridview一样,里面动态生成几个textbox,,再点下面的添加按钮,则再添加一个table,点击下面的保存按钮时,则先查找服务器运行的table,里面findcontrol出你动态生成的一些textbox.sql语句用union all 连接。 批量录入应该使用DetailsView。 假设第一列是主键,后边两列为输入。(1)当点击按钮时,用存储过程在数据库中生成n个主键,然后GridView1.DataBind()。这样GridView中就会自动增加n行,这样就解决了自动增加多行的问题。(2)在GridView设计时,那两个输入列都设置为模板列,并且ItemTemplate中都是放一个TextBox,这样通过第一步自动增加n行后,后面都是可输入的。(3)提交是用DataSet,一行一行读取数据并加入到DataSet,最后Update一下就可以了。 此例子达到的效果是: 每按一次button1,在表格table1中添加一行(行中有2列,一列是文本框,一列是下拉框),并且当按钮第一次按下时再添加一个按钮,点击这个动态添加的按钮,输出表格中所有的控件的值。 前台: <form id="form1" method="post" runat="server"> <asp:table id="table1" runat="server"></asp:table> <asp:placeholder id="placeholder1" runat="server"></asp:placeholder><br><br> <asp:button id="button1" runat="server" text="添加一行"></asp:button> </form> 放置一个table用来动态添加控件,放置一个placeholder用来动态添加按钮,按下这个按钮得到表中控件的值,按下button1按钮一次就添加一行。 后台: button1按钮的事件: private void button1_click(object sender, system.eventargs e) { addtextboxs(); if(viewstate["count"]==null)addbutton(); viewstate["count"]=convert.toint16(viewstate["count"])+1; } 两个方法:一个用来动态添加表格中的行,一个用来动态添加按钮(按钮不是按下button1添加一次的,所以加上if(viewstate["count"]==null)表示只有第一次加载按下按钮的时候才添加) private void addtextboxs() { tablerow tr=new tablerow(); tablecell tc1=new tablecell(); textbox t=new textbox(); t.id="tb"+table1.rows.count; tc1.controls.add(t); tablecell tc2=new tablecell(); dropdownlist dpl=new dropdownlist(); dpl.id="dpl"+table1.rows.count; for(int i=0;i<10;i++)dpl.items.add(i.tostring()); tc2.controls.add(dpl); tr.cells.add(tc1); tr.cells.add(tc2); table1.rows.add(tr); } private void addbutton() { button b=new button(); b.id="btn"; b.text="按钮"; b.click += new system.eventhandler(btn_click); placeholder1.controls.add(b); } 最后是那个动态添加的按钮的事件: private void btn_click(object sender, system.eventargs e) { for(int i=0;i<table1.rows.count;i++) { response.write(((textbox)table1.rows[i].findcontrol("tb"+i)).text+((dropdownlist)table1.rows[i].findcontrol("dpl"+i)).selectedvalue+"<br>"); } } 其实动态添加的控件不复杂,只需要注意一点:动态添加的控件在postback的时候也需要再次添加,那么怎么知道是不是按下了按钮,或者说怎么知道已经按了几次按钮?就用一个标示位存放在viewstate中即可。 page_load事件: private void page_load(object sender, system.eventargs e) { if(viewstate["count"]!=null) { for(int i=0;i<convert.toint16(viewstate["count"]);i++) addtextboxs(); addbutton(); } } 注意不要添加if(!ispostback){},相反你倒可以添加if(ispostback),因为页面第一次加载不可能已经按下按钮了。 求一SQL语句。 写了个JS判断注册用户名是否存在,可是完全没效果,没看出代码哪里错,望各位看看哪里错了 高手大大,小弟急用啊,帮帮小弟啊,在线急等 用户控制的问题,急! 为什么我的TreeView在客户端无法显示 怎样将数据从数据库中提取出来付给一个变量 发送邮件时,总是抛出异常 新手求教2个问题 有没有模拟登录的高手啊,求解决难题 客户端用window.open打开一个窗口下载文件,但下载完后窗口必须手动关闭,为什么? 郁闷,我该不该培训 在asp.net如何播放wmv视频文件
是不是把gridview里的数据导入到SQL
不过你要让SqlDataSource自动生成Insert、Delete、Update的语句
再点下面的添加按钮,则再添加一个table,点击下面的保存按钮时,则先查找服务器运行的table,里面findcontrol出你动态生成的一些textbox.sql语句用union all 连接。
(1)当点击按钮时,用存储过程在数据库中生成n个主键,然后GridView1.DataBind()。这样GridView中就会自动增加n行,这样就解决了自动增加多行的问题。
(2)在GridView设计时,那两个输入列都设置为模板列,并且ItemTemplate中都是放一个TextBox,这样通过第一步自动增加n行后,后面都是可输入的。
(3)提交是用DataSet,一行一行读取数据并加入到DataSet,最后Update一下就可以了。
每按一次button1,在表格table1中添加一行(行中有2列,一列是文本框,一列是下拉框),并且当按钮第一次按下时再添加一个按钮,点击这个动态添加的按钮,输出表格中所有的控件的值。 前台:
<form id="form1" method="post" runat="server">
<asp:table id="table1" runat="server"></asp:table>
<asp:placeholder id="placeholder1" runat="server"></asp:placeholder><br><br>
<asp:button id="button1" runat="server" text="添加一行"></asp:button>
</form>
放置一个table用来动态添加控件,放置一个placeholder用来动态添加按钮,按下这个按钮得到表中控件的值,按下button1按钮一次就添加一行。 后台: button1按钮的事件:
private void button1_click(object sender, system.eventargs e)
{
addtextboxs();
if(viewstate["count"]==null)addbutton();
viewstate["count"]=convert.toint16(viewstate["count"])+1;
}
两个方法:一个用来动态添加表格中的行,一个用来动态添加按钮(按钮不是按下button1添加一次的,所以加上if(viewstate["count"]==null)表示只有第一次加载按下按钮的时候才添加)
private void addtextboxs()
{
tablerow tr=new tablerow();
tablecell tc1=new tablecell();
textbox t=new textbox();
t.id="tb"+table1.rows.count;
tc1.controls.add(t);
tablecell tc2=new tablecell();
dropdownlist dpl=new dropdownlist();
dpl.id="dpl"+table1.rows.count;
for(int i=0;i<10;i++)dpl.items.add(i.tostring());
tc2.controls.add(dpl);
tr.cells.add(tc1);
tr.cells.add(tc2);
table1.rows.add(tr);
}
private void addbutton()
{
button b=new button();
b.id="btn";
b.text="按钮";
b.click += new system.eventhandler(btn_click);
placeholder1.controls.add(b);
}
最后是那个动态添加的按钮的事件:
private void btn_click(object sender, system.eventargs e)
{
for(int i=0;i<table1.rows.count;i++)
{
response.write(((textbox)table1.rows[i].findcontrol("tb"+i)).text+((dropdownlist)table1.rows[i].findcontrol("dpl"+i)).selectedvalue+"<br>");
}
}
其实动态添加的控件不复杂,只需要注意一点:动态添加的控件在postback的时候也需要再次添加,那么怎么知道是不是按下了按钮,或者说怎么知道已经按了几次按钮?就用一个标示位存放在viewstate中即可。 page_load事件:
private void page_load(object sender, system.eventargs e)
{
if(viewstate["count"]!=null)
{
for(int i=0;i<convert.toint16(viewstate["count"]);i++)
addtextboxs();
addbutton();
}
} 注意不要添加if(!ispostback){},相反你倒可以添加if(ispostback),因为页面第一次加载不可能已经按下按钮了。