还是表格问题,大家帮帮忙! 将你的DataTable/DataSet保存到Session中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 acewang:你的意思是说用datagrid实现,绑定到datatable,只是把datatable的记录保存到session中,然后再给datagrid动态添加行,添加完后,再将datagrid的记录刷新一下,将datatable里的数据显示出来。不知我理解对不对? 做一个table,隐藏行,提交时,再一行行提交这种方法就是有点笨!不过有控件可以解决这问题:http://www.infragistics.com/ 隐藏行是可以,我也曾用过table来实现,但是,如果输入很多条记录,恰好隐藏的行数不够,嗬嗬!好像就不灵了。 用dataTable对应到dataGrid上面,把这个dataTable保存到Session里面。等用户提交时再运用dataGrid的更新方法统一更新。 DataTable/DataSet保存到临时内存表如Session里 如果datagrid最开始绑定到某个dataset中某个datatable的,那么一旦dataset里面有数据,该开始就不能显示一个空白的表格如果最开始dataset并没有跟数据库相连,datagrid里输入的值好像不能保存到datatable里,至少我还没有找到这种情况下,怎么把模板列中得知写入到datatable脑袋都大了,大家想想办法吧! 那位好心人能自己做个简单的例子,我实在是想不出办法了,急死了,元旦前就得交活呀![email protected]万分感激! <%@ Page language="c#"%><%@ Import Namespace="System"%><%@ Import Namespace="System.Data"%><script language="C#" runat="server">private void Page_Load(object sender, System.EventArgs e){ ArrayList arr = new ArrayList(); arr.Add("<font color=red>hello...</font>"); // 在此处放置用户代码以初始化页面 DataTable dt = new DataTable(); dt.Columns.Add("编号"); dt.Columns.Add("姓名"); dt.Columns.Add("年龄"); for(int i=0;i<20;i++) { DataRow row = dt.NewRow(); row[0] = i+1; dt.Rows.Add(row); } this.DataGrid1.DataSource=dt; this.DataBind();}override protected void OnInit(EventArgs e){ this.Load += new System.EventHandler(this.Page_Load);}</script><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD> <title>CSDNTest</title> <meta content="Microsoft Visual Studio 7.0" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="CSDNTest" method="post" runat="server"> <asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundColumn DataField="编号" HeaderText="编号"></asp:BoundColumn> <asp:TemplateColumn HeaderText="姓名"> <ItemTemplate> <asp:TextBox runat="server" Width="100%"></asp:TextBox> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="年龄"> <ItemTemplate> <asp:TextBox runat="server" Width="100%" ID="Textbox1" NAME="Textbox1"></asp:TextBox> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:datagrid> </form>保存时可以用,box=(TextBox)DataGrid1.Items[i].Cells[j].Controls[index];box.Text </body></HTML> 谢谢shang515,你这个好像是在页面打开的时候,一次性创建了一个20行的表,但 我需要的是能动态添加行的表。而且所有记录在输入全部完成之前不提交,最后一次性全部提交,中间需要将记录暂存在某个地方。 <table cellspacing="0" cellpadding="5" rules="all" width="100%" bordercolor="#bdbabd" border="1" style="border-color:#bdbabd;border-width:1px;border-style:solid;font-size:9pt;border-collapse:collapse;"> <tr> <td align="center">上厕所</td> <td align="center">拉屎</td> <td align="center">擦屁股</td> </tr> <tr> <td onclick="靠(this)" height="28" width="33%"></td> <td onclick="靠(this)"></td> <td onclick="靠(this)"></td> </tr> <tr> <td onclick="靠(this)" height="28" width="33%"></td> <td onclick="靠(this)"></td> <td onclick="靠(this)"></td> </tr> <tr> <td onclick="靠(this)" height="28" width="33%"></td> <td onclick="靠(this)"></td> <td onclick="靠(this)"></td> </tr> </table><script language="javascript"> function 靠(对象) { if(对象.innerHTML == 对象.innerText) { 对象.innerHTML = "<input style=\"width:100%\" value=\""+ 对象.innerHTML +"\" onblur=\"嘻嘻(this)\">"; } } function 嘻嘻(对象) { 对象.parentNode.innerHTML = 对象.value; }</script> 分值太少呀……呵呵呵……发扬一次共产主义精神……1、首先在页面中加入下面内容;<script>var count = 0;function add(){ var row = element.insertRow(); var cell = row.insertCell(); cell.innerHTML = "<input name='name"+count+"'>"; cell = row.insertCell(); cell.innerHTML = "<input name='age"+count+"'>"; count ++; txtCount.value = count;}</script><input type="hidden" name="txtCount" id="txtCount"><input type=button onclick="add()">2、把你的DataGrid的ID设置为element,自动绑定设为假,并添加两列“姓名”和“年龄”3、为DataGrid绑定一个空的数据源,也是说在页面运行出来之后,只需要看到“姓名”和“年龄”列的列头就可以4、添加一服务器保存按钮5、保存按钮事件(最主要的)使用Request["txtCount"]取出来添加多少行使用循环取出所有添加的值,取法是Request["name"+i.ToString()]Request["age"+i.ToString()]下面怎么处理,就不要问我了…… 分少可以在加,只要问题能解决,不惜一切了!只不过我刚来这地方没几次,可用分不多,还请包涵,等解决了,再多给!我刚学.net没几天,还请大家多帮忙,正好要做项目,还有不少问题呢! 如何验证货币代码必须符合国际惯例 ASP.NET二次开发项目中论坛报错~求助~ 求两个正则(url) 为什么TreeView、FreeTextBox的图标在服务器上不能显示???? 如何将项目配置为进行调试? 有没有人用.NET做过许愿墙? 有关onprerender的用法~~~~~~ 我快要发疯了,请各位大侠救救我 有没有网页美工不错的朋友愿意网上兼职的?我好累啊,得请一个人。 三层开发的疑惑——欢迎指点、讨论 在ASP.NET中,怎样将EXCEL另存为HTML文件? ASP中如何调用浏览器端控件
只是把datatable的记录保存到
session中,然后再给datagrid动态添加行,
添加完后,再将datagrid的记录刷新一下,将datatable里的数据显示出来。不知我理解对不对?
这种方法就是有点笨!
不过有控件可以解决这问题:http://www.infragistics.com/
至少我还没有找到这种情况下,怎么把模板列中得知写入到datatable脑袋都大了,大家想想办法吧!
[email protected]
万分感激!
<%@ Import Namespace="System"%>
<%@ Import Namespace="System.Data"%>
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
ArrayList arr = new ArrayList();
arr.Add("<font color=red>hello...</font>");
// 在此处放置用户代码以初始化页面
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
for(int i=0;i<20;i++)
{
DataRow row = dt.NewRow();
row[0] = i+1;
dt.Rows.Add(row);
}
this.DataGrid1.DataSource=dt;
this.DataBind();
}
override protected void OnInit(EventArgs e)
{
this.Load += new System.EventHandler(this.Page_Load);
}
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>CSDNTest</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="CSDNTest" method="post" runat="server">
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="编号" HeaderText="编号"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="姓名">
<ItemTemplate>
<asp:TextBox runat="server" Width="100%"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="年龄">
<ItemTemplate>
<asp:TextBox runat="server" Width="100%" ID="Textbox1" NAME="Textbox1"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
</form>
保存时可以用,box=(TextBox)DataGrid1.Items[i].Cells[j].Controls[index];box.Text
</body>
</HTML>
最后一次性全部提交,中间需要将记录暂存在某个地方。
<tr>
<td align="center">上厕所</td>
<td align="center">拉屎</td>
<td align="center">擦屁股</td>
</tr>
<tr>
<td onclick="靠(this)" height="28" width="33%"></td>
<td onclick="靠(this)"></td>
<td onclick="靠(this)"></td>
</tr>
<tr>
<td onclick="靠(this)" height="28" width="33%"></td>
<td onclick="靠(this)"></td>
<td onclick="靠(this)"></td>
</tr>
<tr>
<td onclick="靠(this)" height="28" width="33%"></td>
<td onclick="靠(this)"></td>
<td onclick="靠(this)"></td>
</tr>
</table><script language="javascript">
function 靠(对象)
{
if(对象.innerHTML == 对象.innerText)
{
对象.innerHTML = "<input style=\"width:100%\" value=\""+ 对象.innerHTML +"\" onblur=\"嘻嘻(this)\">";
}
}
function 嘻嘻(对象)
{
对象.parentNode.innerHTML = 对象.value;
}
</script>
发扬一次共产主义精神……1、首先在页面中加入下面内容;
<script>
var count = 0;
function add()
{
var row = element.insertRow();
var cell = row.insertCell();
cell.innerHTML = "<input name='name"+count+"'>";
cell = row.insertCell();
cell.innerHTML = "<input name='age"+count+"'>";
count ++;
txtCount.value = count;
}
</script>
<input type="hidden" name="txtCount" id="txtCount">
<input type=button onclick="add()">
2、把你的DataGrid的ID设置为element,自动绑定设为假,并添加两列“姓名”和“年龄”
3、为DataGrid绑定一个空的数据源,也是说在页面运行出来之后,
只需要看到“姓名”和“年龄”列的列头就可以
4、添加一服务器保存按钮
5、保存按钮事件(最主要的)
使用Request["txtCount"]取出来添加多少行
使用循环取出所有添加的值,
取法是Request["name"+i.ToString()]
Request["age"+i.ToString()]
下面怎么处理,就不要问我了……