关于动态DataTable绑定GirdView的问题

彗星 2012-05-17 11:20:47
各位,大家好,小弟有个问题想请教下,需求是用动态的DataTable绑定GridView,因为DataTable中行列

的值会改变,所以GridView中行列会随着DataTable的变化而变化,举个简单的例子,有4个表,分别是年

级表(字段主键年级)、课程表(字段主键课程、年级<=外键)、学期表(字段主键学期、课名、年级<=

外键)、课时表(字段主键课时、课程<=外键、课名<=外键)假设一年级有课程语文、数学,语文课是

lession1(课时1)、lession2(课时2),数学课是lession1(课时3)、lession2(课时3)、lession3

(课时2);二年级有语文、数学、英语,语文的课是lession1(课时1)、lession2(课时1),数学课

是lession1(课时1)、lession2(课时2)、lession3(课时3),英语课是lession1(课时1),这样构

造出来的GridView就是

年级(这是个下拉菜单,选择年级:如,一年级、二年级),根据选中下拉项会改变gridView,如下所示

一年级的GridView
课程名称 语文 数学 英语
lession1 1 3
lession2 2 3
lession3 2

二年级的GridView
课程名称 语文 数学 英语
lession1 1 1 1
lession2 1 2
lession3 3

现在我已经构造出来这个GridView,现在的难题是如何让GridView的单元格可编辑,就是单元格里边的数

字点击后就可以编辑,我在网上也看了相关的例子,但是这些例子GridView都是有固定列的,可以在前台

aspx页面的GridView中绑定,就是<ItemPlate>Label</ItemPlate><EditPlate>TextBox</EditPlate>,但

是我构造的GridView都是动态DataTable生成的,只能在后台写,这块就卡住了,请各位看看有什么好的

建议,先谢谢了!
...全文
161 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
彗星 2012-05-17
  • 打赏
  • 举报
回复
自己先顶了,别沉了
No1bigtooth 2012-05-17
  • 打赏
  • 举报
回复
这是winform的代码,在BS程序中,也可以这样实现的
No1bigtooth 2012-05-17
  • 打赏
  • 举报
回复

int rowNum = dataGridView1.Rows.Count;
for (int i = 0; i < rowNum - 1; i++)
{
for (int j = 0; j < dataGridView1.Rows[i].Cells.Count; j++)
{
if (dataGridView1.Rows[i] != null && dataGridView1.Rows[i].Cells[j] != null)
{
if (dataGridView1.Rows[i].Cells[j].Value != null)
{
string StrNum = dataGridView1.Rows[i].Cells[j].Value.ToString();
if (StrNum != "" && StrNum != "0")
{
//存入数据库
}
else
{
MessageBox.Show("请输入药品数量", "系统提示");
}
}
}
}
}
vbnet_yan 2012-05-17
  • 打赏
  • 举报
回复
BD啊。。。
No1bigtooth 2012-05-17
  • 打赏
  • 举报
回复
如果每个单元格都可以提交,那要用用循环判一遍
No1bigtooth 2012-05-17
  • 打赏
  • 举报
回复
前台声明一个runat="server" 的GridView,在后台动态绑定

if (ds1.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < 5; i++)
{
DataGridViewTextBoxColumn text = new DataGridViewTextBoxColumn();
text.Width = 80;
text.Name = ds1.Tables[0].Columns[i].ColumnName;
text.DataPropertyName = ds1.Tables[0].Columns[i].ColumnName;
dataGridView1.Columns.Add(text);
}
}

int rowNum = dataGridView1.Rows.Count;//取dataGridView1行数,同理也可以取到列数,然后就看你要开始判断提交那个单元格了
Dotar 2012-05-17
  • 打赏
  • 举报
回复
让可编辑的列添加列 TemplateField
 <asp:TemplateField HeaderText="列名">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Eval("后台绑定的列") %>'></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" CssClass="ssTextBox"
Text='<%# Eval("后台绑定的列") %>' visible="false" TextMode="MultiLine"></asp:TextBox>
</ItemTemplate>
<ItemStyle CssClass="ssCell" />
</asp:TemplateField>
label显示 text编辑
  • 打赏
  • 举报
回复
1:设置gridview自增列属性
2:航绑定的时候,增加模板列,显示各单元格数据

第二种方法
可以通过js操作,单元格加上click事件,当点击后,当前单元格内容隐藏,增加一个textbox控件,显示单元格的值。最终通过js取得gridview所有数据,重新更新到数据库

62,268

社区成员

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

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

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

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