优化DataGrid控件的编辑功能

我们来看具体实例。首先在DataCon Web项目里,添加一个Web Form,命名为DataGrid_Sample6.aspx,然后添加一个DataGrid控件,由于我们做了DataGrid控件的显示模版,并且为了优化其编辑属性,我们特别利用<asp:TemplateColumn ><ItemTemplate></ItemTemplate></asp:TemplateColumn >属性添加了DropDownList控件和CheckBox控件。为了便于实例应用和读者理解,我们新建一个TeacherInfor.mdb数据库,该数据库包含一个teacher数据表 ,字段类型和虚拟数据如图9.11和9.12所示。

clip_image001
图9.11 teacher数据表中的字段属性

clip_image002
图9.12  teacher数据表中数据记录

DataGrid_Sample6.aspx的主要HTML代码如下:
<body topMargin="0" MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体"><b>经济管理学院教师信息</b>
   <asp:DataGrid id="DataGrid1"
      runat="server" AutoGenerateColumns="False" ;320px" PageSize="4"
AllowPaging="True">
<AlternatingItemStyle BackColor="WhiteSmoke"></AlternatingItemStyle>
<ItemStyle BackColor="GhostWhite"></ItemStyle>
  <HeaderStyle BackColor="LightSteelBlue"></HeaderStyle>
  <Columns>
   <asp:BoundColumn DataField="id" HeaderText="编号"></asp:BoundColumn>
   <asp:BoundColumn DataField="name" HeaderText="姓名"></asp:BoundColumn>
  <asp:TemplateColumn HeaderText="性别">
   <ItemTemplate>
    <asp:DropDownList id="sex" runat="server" SelectedIndex='&lt;%# Cint(DataBinder.Eval(Container,"DataItem.sex")) %>' &gt;
       <asp:ListItem Value="0">男</asp:ListItem>
     <asp:ListItem Value="1">女</asp:ListItem>
    </asp:DropDownList>
    </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn HeaderText="所获学位">
   <ItemTemplate>
    <asp:DropDownList id="degree" runat="server" SelectedIndex='&lt;%# cint(DataBinder.Eval(Container,"DataItem.degree")) %>'&gt;
     <asp:ListItem Value="0">学士</asp:ListItem>
     <asp:ListItem Value="1">硕士</asp:ListItem>
     <asp:ListItem Value="2">博士</asp:ListItem>
     </asp:DropDownList>
    </ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="性别">
   <ItemTemplate>
    <asp:DropDownList id="title" runat="server" SelectedIndex='&lt;%# Cint(DataBinder.Eval(Container,"DataItem.title")) %>' &gt;
     <asp:ListItem Value="0">讲师</asp:ListItem>
     <asp:ListItem Value="1">副教授</asp:ListItem>
     <asp:ListItem Value="2">教授</asp:ListItem>
     </asp:DropDownList>
   </ItemTemplate>
</asp:TemplateColumn>
  <asp:TemplateColumn HeaderText="婚否">
   <ItemTemplate>
    <asp:CheckBox Runat=server Checked ='&lt;%# DataBinder.Eval(Container,"DataItem.marry") %>' ID="marry" Text ="婚否"&gt;
    </asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateColumn>
</Columns>
<PagerStyle BackColor="LightSteelBlue" Mode="NumericPages"></PagerStyle>
</asp:DataGrid> 
        <asp:button id="Button1" 
       runat="server" Text="批量更新">
         </asp:button></FONT>
</form>
</body>

在上面HTML代码中,注意DataGrid控件值的数据绑定:
SelectedIndex='<%# cint(DataBinder.Eval(Container,"DataItem.degree")) %>'
DataGrid_Sample6.aspx.vb中的逻辑代码如下:
'----code begin ----------
'-省略命名空间的引用
Public Class DataGrid_Sample6
    Inherits System.Web.UI.Page
#Region " Web 窗体设计器生成的代码 "
'此处省略窗体设计器生成的代码
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        If Not IsPostBack Then
            getdata()
        End If
End Sub
    '读取数据
    Sub getdata()
        Dim mycon As OleDb.OleDbConnection
        viewstate("constr") = "provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath(".") + "\TeacherInfor.mdb"
        '使用viewsate保存Connection连接字符串
        Dim mycmd As OleDb.OleDbDataAdapter
        '声明DataAdapter对象
        Dim mysql As String
        '声明Command命令的 SQL字符串
        Try
            mycon = New OleDb.OleDbConnection(viewstate("constr"))
            '实例化Connection对象
            mysql = "Select id,name, sex ,degree, title,marry  from teacher"
            '设置SQL语句,即查询数据库中所有内容
            mycmd = New OleDb.OleDbDataAdapter(mysql, mycon)
            Dim dt As Data.DataSet = New Data.DataSet
            '声明DataSet对象,并实例话
            mycmd.Fill(dt)
            '填充数据,即在内存中生成DataSet模型数据库
            DataGrid1.DataSource = dt.Tables(0)
            '为DataGrid1控件指定数据源
            DataGrid1.DataBind()
            '执行绑定
        Catch ex As Exception
            Response.Write("程序出错,信息描述如下:<br>" & ex.Message)
        Finally

你可能感兴趣的:(数据库,数据表,编辑,teacher,读者)