兩問題:如何一次修改DataGrid當前頁所有記錄?大批量數據錄入有沒有類似Excel的控件:onMouseOver即編輯,onMouseOut即保存?

smile9961 2005-10-11 04:18:11
1、一DataGrid分若干頁,如何一次編輯當前頁所有記錄?即用戶填寫好所有欄位后一次性保存。
2、我現在用的是DataAGrid,但DataGrid等一般控件很難像Excel那樣方便地進行輸入和保存;我看到sharepoint中有一控件可實現“onMouseOver即編輯,onMouseOut即保存”,但全是用js寫的,4000多行的代碼,沒看明白。不知道大家有沒這方面的控件?

非常感謝!
...全文
310 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
闲思暇想 2006-02-12
  • 打赏
  • 举报
回复
学习
smile9961 2005-10-13
  • 打赏
  • 举报
回复
非常感謝大家關注和幫忙,我現在還是用textbox模板列的方法(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchtopquestionsaboutaspnetdatagridservercontrol.asp)做的。
樣子跟孟子的ultraDataGrid類似的控件,又可以直接修改數據的都要花錢買的。
smile9961 2005-10-13
  • 打赏
  • 举报
回复
奇怪,電腦重啓后孟子的ultraDataGrid例子就可以正常執行了......
建議孟子能將它做成數據可以修改的就更好了。
smile9961 2005-10-13
  • 打赏
  • 举报
回复
奇怪,電腦重啓后孟子的ultraDataGrid例子就可以正常執行了......
建議孟子能將它做成數據可以修改的就更好了。
辉说慧语 2005-10-13
  • 打赏
  • 举报
回复
第一个问题我前两天碰到了,我使用的方法是动态生成页面,自己保持状态,遍历当前页,逐条保存
smile9961 2005-10-13
  • 打赏
  • 举报
回复

sub removeColumn()
dim iRow
if getVisibleCount = 1 then
msgbox "必须至少有一列可见", vbInformation, "移除列" '行: 1489
writeFieldChooserHTML()
exit sub
end if
gridHeadRow.children(menuHeadIndex).style.display = "none"
for iRow = 0 to gridBody.children.length - 1
with gridBody.children(iRow)
if .id <> "cellEdit" then
.children(menuHeadIndex).style.display = "none"
end if
end with
next
getGridRowWidth()
elementOnResize()
end sub

<PUBLIC:attach event="oncontentready" onevent="initCoolUltraGrid()" /> 行: 4

请大家帮忙看看.

smile9961 2005-10-12
  • 打赏
  • 举报
回复
非常感谢你的回复,孟子!
我的贴子地址:http://community.csdn.net/Expert/topic/4319/4319601.xml?temp=.5610468
下载了你的例子后还有两个问题,麻烦再帮我看看是什么原因:
1.下载后,我新建了一个名为UltraGrid的方案;将你的那些文件加入,但页面执行时提示两个javascript错误:
第一个:
行: 1489
字符: 36
错误: 无效字符
代码: 0
URL: http://localhost/UltraGrid/UltraGrid.htc

第二个:
行: 4
字符: 1
错误: 类型不匹配: 'initCoolUltraGrid'
代码: 0
URL: http://localhost/UltraGrid/UltraGrid.htc

另外,执行后页面上只能看到"XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子。"几个字和一个白色方块.我查看了源代码,代码里明明含有数据库记录数据,但页面上就是看不到.不知道是不是由于div的大小或其中字体颜色等设置不当造成的?
smile9961 2005-10-12
  • 打赏
  • 举报
回复
to qgqchile(qgq):
我想在使用的就是DataGrid,将所有需要修改的栏位作为模板列(Textbox).而提交的时候也是一次提交.
但不知你所说的ajax是怎么回事,我主要是不知道ajax是什么东东......还望多多指教.
qgqchile 2005-10-12
  • 打赏
  • 举报
回复
不难不难,
首先劝你如果想及时保存的话不要轻信ONMOUSE OVER事件,因为实际输入中用户经常用TAB的,下面给你两个建议

一种方法是用 INFTRAGISTICS有个叫ULTRAGRID的控件现成的

第二种方法是用DATAGRID+ajax,这两天正在做这个
1 你DATAGRID里全部用摸板列里填加TEXTBOX, 

2 在失去交点后(ONBLUR)里先获得当前TEXTBOX控件VALUE(THIS.VALUE), 提交给一个后台的<AJAX METHOD>,我用的在STROE PROCEDURE里做些验证什么的,也可以做个CLASS验证 

以上是及时保存的方法如果要做输入和一次性保存更简单拉,用个FOR读取每行保存就可以
忘记一点就是这种方法要求每行有个列是ID号,在提交的时候连ID号和当前列属性一起提交,要不没法改

cm8983 2005-10-12
  • 打赏
  • 举报
回复
给你个例子,你的Mail
孟子E章 2005-10-12
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/Exam/ultraDataGrid.zip
孟子E章 2005-10-12
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/Exam/ultraGrid.zip
smile9961 2005-10-12
  • 打赏
  • 举报
回复
bitsbird(一瓢 在路上...),孟子的网站哪里有提供UltraGrid.css的下载,请详细点,谢谢!
smile9961 2005-10-12
  • 打赏
  • 举报
回复
问题:通过DataGrid外的按钮一次性提交当前页所有记录时取值不对:取到的还是第一次databind时的值,而不是修改后的值

原来是因为给DataGrid绑定数据时没有写在 not ispostback中!晕了...,还犯这样的错误
hw256 2005-10-12
  • 打赏
  • 举报
回复
1、建立一个模板列。数据以要SQL中的NORTHWID为例
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CompanyName") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
2、在网页中添加一个BUTTON控件,代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
this.dataSet11 = (CJHB.DataSet1)this.Session["data"];
foreach(System.Web.UI.WebControls.DataGridItem gridItem in this.DataGrid1.Items)
{
System.Web.UI.WebControls.TextBox tbox = (System.Web.UI.WebControls.TextBox)gridItem.FindControl("TextBox1");
if(this.dataSet11.Customers[gridItem.DataSetIndex].CompanyName != tbox.Text)
{
this.dataSet11.Customers[gridItem.DataSetIndex].CompanyName = tbox.Text;
}
}
this.sqlDataAdapter1.Update(this.dataSet11);
this.dataSet11.AcceptChanges();
this.Session["data"] = this.dataSet11;
this.DataGrid1.DataSource=this.dataSet11;
this.DataGrid1.DataBind();
}
bitsbird 2005-10-12
  • 打赏
  • 举报
回复
dotnet.aspx.cc上有的吧
smile9961 2005-10-12
  • 打赏
  • 举报
回复
哪位要有孟子的UltraGrid.css,贴出来重重有赏!
smile9961 2005-10-12
  • 打赏
  • 举报
回复
以上消息是发给孟子的,请大家也帮看看第一个问题该怎么修改;谢谢!
smile9961 2005-10-12
  • 打赏
  • 举报
回复
我的问题:如何一次修改DataGrid當前頁所有記錄?大批量數據錄入有沒有類似Excel的控件:onMouseOver即編輯?
1、我按照你给的这个例子
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchtopquestionsaboutaspnetdatagridservercontrol.asp
做了:但有一个问题:通过DataGrid外的按钮一次性提交当前页所有记录时取值不对:取到的还是第一次databind时的值,而不是修改后的值。我是这样取值的:
For i = 0 To Grid2.Items.Count - 1
oDGitem = Grid2.Items.Item(i)

OrderID = CInt(CType(oDGitem.Cells(0).FindControl("OrderID"), Label).Text)
ShippedDate = System.Convert.ToDateTime(CType(oDGitem.Cells(5).FindControl("ShippedDate"), TextBox).Text)
ShipVia = CType(oDGitem.Cells(6).FindControl("ShipVia"), TextBox).Text
next

2、另外我看到你的网站上“XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子”的例子很好,但是没有你的UltraGrid.css(<link rel="stylesheet" type="text/css" href="UltraGrid.css">,所以看不到效果,能否将您的UltraGrid.css贴出来,或发给我?
shalen520 2005-10-11
  • 打赏
  • 举报
回复
可以用farpoint
加载更多回复(5)

62,074

社区成员

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

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

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

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