Office中国论坛/Access中国论坛

标题: 【教程】从Access到Asp.net(七) [打印本页]

作者: 情比金坚    时间: 2006-8-13 10:28
标题: 【教程】从Access到Asp.net(七)
昨天我们添加了一个框架网页:Admin_mat.htm,今天我们继续在基础上设计,做出aceess里frm_admin_mat的效果。

       首先,我们在资源管理-----点击右键-----添加web窗体----添加一个web窗体,名称叫Admin_mat.aspx,注意:昨天的后缀名是htm,今天的是aspx

       点击工具箱的html抽屉,里面有很多控件,大多数与web控件相同,找到tabel,单击后在窗体上画一个控件,这是个三行三列的表格,通过右键——插入和删除,把它做成一个5行1列的表格[attach]19707[/attach]
[attach]19708[/attach]


[此贴子已经被作者于2006-8-13 2:29:06编辑过]


作者: 情比金坚    时间: 2006-8-13 10:32
【<A>标记】
这里要用到一个控件叫“赋值超链接”的Html控件,英文名是Anchor,也许是我太笨了,我没有再控件工具箱中找到他,他的写法是
<A></A>中间是显示出来的文字,有下列一些属性:
Id=控件的名称
Href=URL地址
Target=链接要在哪一个框架打开
Name=目的书签的名称
Onserverclick=事件程序名称
Title=鼠标移动上去的小提示
由于没有发现控件,我们只好到html视图下编辑,在表格的<td></td>中间插入<A></A>然后显示“<A> 属性页”对话框,请先单击“设计”视图图面上的链接文本;或者在“HTML”视图中将插入点放在所需的 <A> 元素内,然后从“视图”菜单中选择“属性页”对话框。[attach]19709[/attach]
编辑以前的html:
    <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 16px; WIDTH: 232px; POSITION: absolute; TOP: 32px; HEIGHT: 160px"
     cellSpacing="1" cellPadding="1" width="300" border="1">
     <TR>
      <TD></TD>
      <TD></TD>
      <TD></TD>
     </TR>
     <TR>
      <TD></TD>
      <TD></TD>
      <TD></TD>
     </TR>
     <TR>
      <TD></TD>
      <TD></TD>
      <TD></TD>
     </TR>
    </TABLE>
编辑以后的html:
    <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 24px; HEIGHT: 216px"
     cellSpacing="8" cellPadding="8" width="144" border="0" height="216" align="center">
     <TR>
      <TD style="HEIGHT: 37px" bgColor="#ffccff" colSpan="1" rowSpan="1"><A href="pkinds_mat.aspx" target="right">商品类别管理</A></TD>
     </TR>
     <TR>
      <TD bgColor="#ffccff" colSpan="1" rowSpan="1"><A href="pkinds_mat.aspx"  target="right">商品信息管理</A></TD>
     </TR>
     <TR>
      <TD bgColor="#ffccff" colSpan="1" rowSpan="1"><A href="pinfo_add.aspx" target="right">添加新商品</A></TD>
     </TR>
     <TR>
      <TD bgColor="#ffccff" colSpan="1" rowSpan="1"><A href="salelist_mat.aspx" target="right">销售订单管理</A></TD>
     </TR>
     <TR>
      <TD bgColor="#ffccff" colSpan="1" rowSpan="1"><A href="admininfo_mat.aspx" target="right">系统用户管理</A>
      </TD>
     </TR>
    </TABLE>
这个是左边的那一排按钮,现在新建右面的界面:新建5个web窗体:命名为:"pkinds_mat.aspx","pkinds_mat.aspx","pinfo_add.aspx","salelist_mat.aspx","admininfo_mat.aspx",分别用<A>做好连接
回到框架页面,填写框架左边的链接地址:(下面第二行)
<frameset cols="22%,78%" border="0" frameSpacing="0" frameBorder="0">
<frame name="left" src="admin_mat.aspx">
<frame name="right" src="">
<noframes>
作者: 情比金坚    时间: 2006-8-13 10:34
【DateGrid】
这个控件可以说是asp.net里面最主要的数据控件了:先说一个数据加载办法。
1、 点击工具箱组件层,从工具箱中拖入一个dategrid控件,id默认值为datagrid1。
2、 点击工具箱数据层,拖动一个oledbdataadapter对象到窗体里来,此时会启动数据配置向导
3、 在【提供程序】选择Microsoft Jet 4.0,点击下一步
4、 选择数据库,点击测试连接
5、 点击下一步,使用SQL语句
6、 下一步,使用查询生成器——这里和access差不多,最后生成SELECT tab_pkinds * FROM tab_pkinds
7、 下一步,完成,这时窗体下方会有两个图标,OleDbAdapter1, 和OleDbConnection1
8、 点击OleDbAdapter1的属性,下面有生成数据集命令,点击它就会打开“生成数据集”窗口。确定后生成一个叫Dataset11的对象
9、 点击DataGrid1,右键——打开属性生成器,设定数据源。
10、 点击DataGrid1,右键——打开套用自动格式,选择一个格式式样。
11、 点击属性生成器的“列”,打开列设置,添加两个数据列:id,pkinds,设置页眉文本。展开按钮列,添加两个按钮:“删除按钮”和“编辑按钮”
12、 点击分页,设定每页显示的数据条目,以及翻页按钮的样式
13、 点击格式,设置本表格控件的格式,我这里只是设置了一下字符大小为X-small,其实可以做很细致的设定。
14、 双击窗体空白处,打开vb窗体,在Page_Load事件中添加下列代码

Me.OleDbDataAdapter1.Fill(DataSet11)
DataGrid1.DataBind()
15、 在资源管理器中办admin_amt.htm设为起始页
16、 点击工具栏上方的运行按钮,就可以把这三个页面统一运行了,在运行后点击点击商品类别管理,就可以看到右边出现了类别表格。[attach]19710[/attach]
[attach]19711[/attach]
[attach]19712[/attach]
[attach]19713[/attach]
[attach]19714[/attach]
[attach]19715[/attach]
[attach]19716[/attach]
[attach]19717[/attach]


[此贴子已经被作者于2006-8-13 2:43:45编辑过]


作者: sgrshh29    时间: 2006-8-13 16:09
[em17][em09][em06]
作者: yodong    时间: 2006-8-18 04:01


[此贴子已经被作者于2006-8-17 20:01:45编辑过]


作者: wjb5645    时间: 2006-8-31 06:48
第七章的种类更新出错不知为啥:



[attach]20087[/attach]


[attach]20088[/attach]

作者: 情比金坚    时间: 2006-8-31 10:36
原因是你的第一个单元格在编辑状态下使用了文本框,这样一来用e.Item.cells(0).text就无法获得它的值,比较第二个单元格的用法就知道了,所以要把第一列的只读属性设为是。
作者: wjb5645    时间: 2006-9-1 04:56
谢卸!

我将id列改为只读,已无错误提示,可没有更新哟,又错在哪了



[attach]20103[/attach]


删除为啥要点击两次才有效?
作者: 情比金坚    时间: 2006-9-1 11:16
你在页面加载事件中的数据加载要写在not ispostback情况下:

if not ispostback then

BindGrid()  '数据加载函数

end if

否则数据是来自服务器而非客户端,这样一来在客户端做的更改当然就无效了。


作者: wjb5645    时间: 2006-9-3 06:16
我照抄的,帮看下错在哪:

Public Class pkinds_mad
    Inherits System.Web.UI.Page
    Dim myconstr As String = ConfigurationSettings.AppSettings("constr") & Server.MapPath(".") & ConfigurationSettings.AppSettings("dbs")
    Protected WithEvents Button2 As System.Web.UI.WebControls.Button
    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
    Protected WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents OleDbInsertCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents OleDbUpdateCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents OleDbDeleteCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
    Protected WithEvents DataSet11 As minishop1.DataSet1
    Dim mycon As OleDb.OleDbConnection = New OleDb.OleDbConnection(myconstr)

End Sub

'为datagrid绑定数据的过程

Sub BindGrid()
        Dim mycmd As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("select id,pkinds from tab_pkinds", mycon)
               Dim dt As Data.DataSet = New Data.DataSet
        mycmd.Fill(dt)
        Dim dv As Data.DataView = New Data.DataView(dt.Tables(0))
        DataGrid1.DataSource = dv
        DataGrid1.DataBind()
    End Sub



Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '在此处放置初始化页的用户代码
        Me.OleDbDataAdapter1.Fill(DataSet11)
        DataGrid1.DataBind()
        If Not IsPostBack Then
            BindGrid()  '数据加载函数
        End If
    End Sub

'更新事件过程
    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
        Dim mysql As String
        Dim mycmd As OleDb.OleDbCommand
        Dim id As Integer = e.Item.Cells(0).Text            '获取激活行的第一单元格的文本
        Dim Txt As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text.ToString        '将单元格转换为textbox控件,再获取他的文本
              mysql = "UPDATE tab_pkinds SET tab_pkinds.pkinds = '" + Txt + "' WHERE id=" & id

        Response.Write(Txt)
        mycon.Open()
        mycmd = New OleDb.OleDbCommand(mysql, mycon)
        mycmd.ExecuteNonQuery()
        mycon.Close()
        DataGrid1.EditItemIndex = -1
        BindGrid()
    End Sub
作者: 情比金坚    时间: 2006-9-4 02:42
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '在此处放置初始化页的用户代码
        If Not IsPostBack Then
            BindGrid()  '数据加载函数
        End If
    End Sub
作者: wjb5645    时间: 2006-9-5 06:39
我加了这句了呀:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load



        '在此处放置初始化页的用户代码
        Me.OleDbDataAdapter1.Fill(DataSet11)
        DataGrid1.DataBind()
        If Not IsPostBack Then
            BindGrid()  '数据加载函数
        End If
    End Sub

难道:

Me.OleDbDataAdapter1.Fill(DataSet11)
        DataGrid1.DataBind()
不能放在这?
作者: 情比金坚    时间: 2006-9-5 08:22
前面这部分不要:Me.OleDbDataAdapter1.Fill(DataSet11)
        DataGrid1.DataBind()

作者: wjb5645    时间: 2006-9-5 19:25
我也试过,这部分不要,就没数据内容了.怪怪
作者: 情比金坚    时间: 2006-9-5 22:52
你的datagrid1 已经绑定了 dataset1 ,解除绑定即可,在.Net 1.1中尽量使用ado.net来加载数据,在Net2.0中则尽量使用绑定数据控件。
作者: wjb5645    时间: 2006-9-6 04:53
我晕死了

在datagrid1去掉dataset1又变成没有数据内容了

我还是放上来帮我改改:



[attach]20171[/attach]


或能不能你的放上来给我练练,不好意思!!!
作者: 情比金坚    时间: 2006-9-6 06:27
以下是引用wjb5645在2006-9-5 20:53:00的发言:


或能不能你的放上来给我练练,不好意思!!!

你可以在第一章里面下载的到源文件
作者: wjb5645    时间: 2006-9-8 05:08
打开您的项目文件

minishop.sln

minishop.vbproj

均提示:



[attach]20210[/attach]


可我自己新建的又正常,是为啥呀?
作者: 情比金坚    时间: 2006-9-8 08:46
没有建立虚拟目录吧?在IIS中新建虚拟目录指向该文件夹看看。
作者: wjb5645    时间: 2006-9-9 06:25
老烦你都有点不好意思了,是要把setup2改为minishop就可以了.

再次感谢!!!
作者: johnx9    时间: 2006-11-23 04:34
加油!!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3