【请教大家】 如何在DataGrid 实现多行同时编辑的状态,然后点击页面按钮便实现全部更新?

o07 2006-10-20 05:31:17
序号 单位名称 技术分(满分5) 公司资质(满分30) 方案(满分5) 价格(满分3.5)合计
1 单位1 分数 分数 分数 分数 分数
2 单位2 分数 分数 分数 分数 分数
3 单位3 分数 分数 分数 分数 分数
4 单位4 分数 分数 分数 分数 分数

-----------------------
问题: datagrid有什么办法实现以上类似的多行同时编辑的状态,然后点击一按钮便实现全部更新?
...全文
555 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
D__D 2006-12-05
  • 打赏
  • 举报
回复
myminimouse 2006-10-21
  • 打赏
  • 举报
回复
我们以前做这样的都是自己new table出来,一格格的textbox自己写
o07 2006-10-21
  • 打赏
  • 举报
回复
sp1234(3+1=无穷大)

问题已基本解决,
但可能需要在当前编辑框中,设置一些正则,给予提示。


谢谢你的热心与帮助。
  • 打赏
  • 举报
回复
当然自己白手起家写也可以。

从DataGrid的基础上写的好处就是你可以有分页、数据绑定、列的多种类型、设计器支持等等成熟的自动处理框架可以利用。
levin9 2006-10-20
  • 打赏
  • 举报
回复
一个遍历就可以啦
  • 打赏
  • 举报
回复
Q:但假设行与列数都不固定,此办法似乎行不通?
——————————————————————————————————————————
A:模板列(TemplateColumn)是完全可以用代码创建的。整个DataGrid,不管是自动绑定还是模板、不管你在设计器上怎么定义,都是可以完全用程序创建的。实际上我更喜欢用程序动态产生。

你可以Google一下代码“new TemplateColumn()”,应该比较容易找到很专业的例子和说明,我就不在这里说详细了。
newnan 2006-10-20
  • 打赏
  • 举报
回复
使用第三方的控件,如NetAdvantage 2006版,他完全能够实现你的要求,还具有ajax实现无刷新更新能力
daishengs 2006-10-20
  • 打赏
  • 举报
回复
我以前也是用模板列解决这样的问题的,但前提是列数得确定,行可以不确定。

<asp:datagrid id="grid4" runat="server" AutoGenerateColumns="False" Width="100%" DataKeyField="ID">
<Columns>
<asp:BoundColumn ReadOnly="True" HeaderText="编号">
<HeaderStyle Width="25px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="Title" HeaderText="题干">
<HeaderStyle Width="450px"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="答案">
<HeaderStyle Width="150px"></HeaderStyle>
<ItemTemplate>
<asp:TextBox id="TextShortRubric" runat="server" Width="100%" Height="100%"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:datagrid>

//保存填空题
//循环取的DataGrid控件中选定项的值
i = 0;
SelectLib = lblLib4.Text.Split(',');
foreach(DataGridItem oDataGridItem in grid4.Items)
{
strSql.Append("update PaperList set ");
textbox = (TextBox)oDataGridItem.FindControl("TextShortRubric");
if(textbox.Text == "")
{
strSql.Append(" KeyA=''");
}
else
{
strSql.Append(" KeyA='"+myBusFunction.EnCos(textbox.Text)+"'");
}
strSql.Append(" where ID='"+SelectLib[i]+"';");
i++;
}
o07 2006-10-20
  • 打赏
  • 举报
回复


也谢谢孟子兄弟。
碰巧也在另一个搜索而看到你上面发的链接,先谢了,在研究中。
晚点再结贴。
o07 2006-10-20
  • 打赏
  • 举报
回复

to: sp1234(警惕“败事有余”,容忍“成事不足”)

谢谢兄弟的建议,这样的办法不错,但假设行与列数都不固定,此办法似乎行不通?
另,给你发了短消息,请查收。
  • 打赏
  • 举报
回复
Q: 我知道自定义模板列绑定TextBox 可以实现当前行为编辑状态,但我想实现datagrid的所有行在页面加载时,就是整个表格为编辑状态,如何考虑?
——————————————————————————————————————————
A:可能我没有说清楚?!

我的意思是你要在设计器上用自定义模板列而不用自动绑定列,然后从工具箱栏中将一个个Textbox控件拖入各个模板,有几列就拖入几个Textbox。如果你的DataGrid是10行9列的,那么叶面显示的时候就出现90个TextBox。
孟子E章 2006-10-20
  • 打赏
  • 举报
回复
这里面有例子

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchtopquestionsaboutaspnetdatagridservercontrol.asp
o07 2006-10-20
  • 打赏
  • 举报
回复
A: 如果你使用自定义模板列绑定TextBox,那么DataGrid显示的时候就是TexBox——可编辑的一个个单元格。

-------------------------------------------------

我知道自定义模板列绑定TextBox 可以实现当前行为编辑状态,但我想实现datagrid的所有行在页面加载时,就是整个表格为编辑状态,如何考虑?
  • 打赏
  • 举报
回复
当然,你完全可以设置TextBox的边缘的style,让它与背景一样,而不要像默认的TextBox的3维边框那么刺眼。
  • 打赏
  • 举报
回复
Q: 现在的问题是,如何在页面加载时,就把当前datagrid的所有行变为可编辑的状态,这

才是关键。
————————————————————————————————————————
A: 如果你使用自定义模板列绑定TextBox,那么DataGrid显示的时候就是TexBox——可编辑的一个个单元格。此时DataGrid那种“编辑”按钮就根本不用了!
o07 2006-10-20
  • 打赏
  • 举报
回复


其实客户考虑的,也是十分合理的。
像c/s的报表处理,就比较方便,打开一个报表模板,用户就可整页编辑。最后只点击一个按钮便完成更新。



如果在datagrid中,每行加一个更新按钮,不要说客户,连我们自己都烦s
jimu8130 2006-10-20
  • 打赏
  • 举报
回复
你说的就需要对datagrid进行重载方法,不过没看过别人这样做关注
o07 2006-10-20
  • 打赏
  • 举报
回复

谢谢楼上几位。

取值与更新数据的思路有了。

现在的问题是,如何在页面加载时,就把当前datagrid的所有行变为可编辑的状态,这

才是关键。
o07 2006-10-20
  • 打赏
  • 举报
回复
使用textbox不过实现起来有点麻烦,提倡不用,还不如一行一行的改,那样容易出问题

++++++++++++++++++++++++++

客观不如实际需要,有几个项目,客户都希望像报表一样,无需要再触发什么事件才可编辑。


go_now 2006-10-20
  • 打赏
  • 举报
回复
建议使用自定义模版列,
使用textbox不过实现起来有点麻烦,提倡不用,还不如一行一行的改,那样容易出问题
加载更多回复(5)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧