累了一个下午,总算有了点收获,把动态绑定列的操纵方式搞清楚了,ASP.NET中Datagrid实在太强大了。因为今天给学生讲代码用的是vb语法,干脆就cv过来: Dim qstr As String = "Provider=""Microsoft.Jet.OLEDB.4.0"";Data Source=""" + Request.PhysicalApplicationPath + "Student.mdb""" Dim odc As OleDbConnection = New OleDbConnection(qstr) If odc.State = ConnectionState.Open Then odc.Close() End If Dim oda As OleDbDataAdapter = New OleDbDataAdapter("select * from Student_info", odc) Dim odb As OleDbCommandBuilder = New OleDbCommandBuilder(oda) Dim myds As DataSet = New DataSet oda.Fill(myds) odc.Close() '创建绑定列,headertext是标题属性,datafield是数据绑定字段 '下面在datagrid中添加了四个模板列,一旦datagrid绑定,则每个 '模板列会一一与数据字段绑定 Dim col As BoundColumn = New BoundColumn col.HeaderText = "学号" col.DataField = "Stu_ID" col.SortExpression = "String" dg_Student.Columns.Add(col) col = New BoundColumn col.HeaderText = "姓名" col.DataField = "Stu_Name" dg_Student.Columns.Add(col) col = New BoundColumn col.HeaderText = "性别" col.DataField = "Stu_Sex" dg_Student.Columns.Add(col) col = New BoundColumn col.HeaderText = "地址" col.DataField = "Stu_Address" dg_Student.Columns.Add(col) '创建视图,创建排序规则 Dim dv As DataView = myds.Tables(0).DefaultView dv.Sort = "Stu_ID" '''''''''''''''''' Session("student" = myds dg_Student.DataSource = dv dg_Student.DataBind()注意:datagrid列集合中可以还可以加入模板列,代码如下,还没测试过:(C#) TemplateColumn tm2=new TemplateColumn(); tm2.ItemTemplate=new ColumnTemplate2(); tm2.HeaderText="学院"; DataGrid1.Columns.Add(tm2); 这里的ColumnTemplate2是自定义的模板类,声明如下,它实现了ITemplate接口 public class ColumnTemplate2 : ITemplate { public void InstantiateIn(Control container) { DropDownList dpl = new DropDownList(); dpl.ID="dep"; container.Controls.Add(dpl); //加入一个id="dep"的下拉框,数据在DataGrid的ItemDataBound中绑定 } }下面只需将模板绑定到数据列: DropDownList ddl=(DropDownList)e.Item.FindControl("dep"; ddl.DataSource=ds.Tables["table1"]; ddl.DataTextField="depname"; ddl.DataValueField="depid"; ddl.DataBind(); 搞定,但是还有一个问题没有解决,就是手动用adapter生成的dataset11为什么不能保存到session里头,重新提交页才发现session里头没有内容.

评论