关于动态DataTable绑定GirdView的问题
各位,大家好,小弟有个问题想请教下,需求是用动态的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生成的,只能在后台写,这块就卡住了,请各位看看有什么好的
建议,先谢谢了!
------解决方案--------------------
1:设置gridview自增列属性
2:航绑定的时候,增加模板列,显示各单元格数据
第二种方法
可以通过js操作,单元格加上click事件,当点击后,当前单元格内容隐藏,增加一个textbox控件,显示单元格的值。最终通过js取得gridview所有数据,重新更新到数据库
------解决方案--------------------
让可编辑的列添加列 TemplateField
C# code
<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>
------解决方案--------------------
前台声明一个runat="server" 的GridView,在后台动态绑定
C# code
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);
}
}
------解决方案--------------------
BD啊。。。