正文

ASP.NET动态操纵绑定列 [原] 2006-05-26 10:51:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/14881.html

分享到:

累了一个下午,总算有了点收获,把动态绑定列的操纵方式搞清楚了,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里头没有内容.

阅读(2958) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册