首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于动态DataTable绑定GirdView的有关问题

2012-09-24 
关于动态DataTable绑定GirdView的问题各位,大家好,小弟有个问题想请教下,需求是用动态的DataTable绑定Grid

关于动态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啊。。。

热点排行