设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3478|回复: 19
打印 上一主题 下一主题

[Access本身] 【教程】从Access到Asp.net(九)

[复制链接]
跳转到指定楼层
1#
发表于 2006-8-15 09:16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从Access到Asp.net(九)
        昨天关于datagrid的设置,还有一些项目,比如关于数据格式的设置等等,怎样才能令其出现货币格式呢?
       .NET Framework 定义了标准和自定义格式说明符,用于格式化数字、日期和时间以及枚举。各种格式化输出字符串的方法,以及一些分析输入字符串的方法都使用格式化说明符。
C 或 c 货币 数字转换为表示货币金额的字符串。
D 或 d 十进制 只有整型才支持此格式。
E 或 e
G 或 g 常规  
N 或 n 数字  
P 或 p 百分比  
R 或 r 往返过程
格式放在一对大括号里,所有格式项都采用下面的形式。
{index[,alignment][:formatString]}
格式项由下面的组件构成。
索引组件
       强制“索引”组件(也叫参数说明符)是一个从 0 开始的数字,可标识值列表中对应的元素。也就是说,参数说明符为 0 的格式项格式化列表中的第一个值,参数说明符为 1 的格式项格式化列表中的第二个值,依次类推。
通过指定相同的参数说明符,多个格式项可以引用值列表中的同一个元素。例如,通过指定类似于“{0:X} {0:E} {0:N}”的源字符串,可以将同一个数值格式化为十六进制、科学表示法和数字格式。
每一个格式项都可以引用所有的参数。例如,如果有三个值,则可以通过指定类似于“{1} {0} {2}”的源字符串来格式化第二、第一和第三个值。格式项未引用的值会被忽略。如果参数说明符指定了超出值列表范围的项,将导致运行时异常。
对齐组件
       可选的“对齐”组件是一个带符号的整数,指示首选的格式化字段宽度。如果“对齐”值小于格式化字符串的长度,“对齐”会被忽略,并且使用格式化字符串的长度作为字段宽度。如果“对齐”为正数,字段的格式化数据为右对齐;如果“对齐”为负数,字段的格式化数据为左对齐。如果需要填充,则使用空白。如果指定“对齐”,就需要使用逗号。
格式字符串组件
       可选的“格式字符串”组件由标准或自定义格式说明符组成。如果不指定“格式字符串”,则使用常规(“G”)格式说明符。如果指定“格式说明符”,需要使用冒号。
【datalgrid的编辑格式】
        通过昨天的练习,网友们应该察觉到,在datagrid的编辑状态下,其格式会和普通状态下有较大区别,这时你也许希望自定义设计编辑状态下的datagrid。Datagrid的属性生成器里有一个“将此列变成模版列”的按钮,点击以后,在控件右键的菜单里面有一个”编辑模版”命令,点击后可以进入模版编辑状态。不单可以设计编辑状态下的datagrid,也可以设计正常状态下的datagrid,我就是把商品信息表格里的“备注”字段换成了textbox,不然无法实现多行显示。




[此贴子已经被作者于2006-8-15 1:19:43编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
 楼主| 发表于 2006-8-15 09:21:00 | 只看该作者
【DropDownList】
     昨天内容不多,大家应该自己又尝试设计一些吧,根据我们的access小样,在商品信息添加窗体里,关于商品类别的,我们需使用下拉框来选择,那在.net里面怎样对下拉框添加数据呢?关于下拉框在哪里,我就不用说了吧?
同样,我们的下拉框数据是通过ado.net动态添加的:
'获得商品类别信息
    Sub dropdownlist_add()
        Dim mysql As String
        mysql = "select pkinds from tab_pkinds order by id"
        mycon.Open()
        Dim mycmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(mysql, mycon)
        Dim myrs As OleDb.OleDbDataReader
        myrs = mycmd.ExecuteReader
        DropDownList1.Items.Clear()
        Do While myrs.Read
            DropDownList1.Items.Add(myrs("pkinds"))
        Loop
        myrs.Close()
        mycon.Close()
End Sub
3#
 楼主| 发表于 2006-8-15 09:23:00 | 只看该作者
【图片的添加】



我们在access上图片用的是链接,数据库只是储存链接地址,这个相对简单,直接指定地址就对了。可是现在图片是储存于别的电脑上的啊,所以要先把图片上传给服务器,然后返回地址。
那么我们用于打开本地对话框的办法是啥呢?access里我们有函数,也有控件(office2003以后),在asp.net我们用的是:file field他是一个html控件:
    '函数:上传商品图片信息,返回服务器中的图片路径
    Function upimg(ByVal file As Object) As String
        Dim s1 As String   '图片的格式
        Dim s2() As String   '原图片的地址,用"\"分割为数组
        Dim s3 As String   '上传后图片的名称,以年月日时分秒来命名
        If file.PostedFile.ContentLength > 0 Then
            s2 = file.PostedFile.FileName.Split("\")
            s1 = Right(s2(s2.Length - 1), 4)
            If s1 = ".jpg" Or s1 = ".JPG" Or s1 = ".GIF" Or s1 = ".gif" Then
                s3 = Format(Now(), "yyyyMMddHHmmss") + s1
                file.PostedFile.SaveAs(Server.MapPath(".") + "\images\" + s3)
                upimg = "images\" + s3
            End If
        Else
            upimg = ""
        End If
    End Function


最后把商品信息添加到数据库里去:
    '添加按钮的事件
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim imgstr, spname, spkind, sprice, slprice, spcount, spmsg As String
        If upimg(file1) = "" Then
            imgstr = "\images\noimges.jpg"
        Else
            imgstr = upimg(file1)
        End If
        spname = TextBox1.Text
        spkind = DropDownList1.SelectedValue
        sprice = TextBox2.Text
        slprice = TextBox3.Text
        spcount = TextBox4.Text
        spmsg = TextBox6.Text
        Dim mysql As String
        mysql = "INSERT INTO tab_pinfo(pname,pkinds,price,lprice,pcount,pimg,pmsg) VALUES ('" _
        & spname & "','" & spkind & "'," & sprice & "," & slprice & "," & spcount & ",'" & imgstr & "','" & spmsg & "')"
        mycon.Open()
        Dim mycmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(mysql, mycon)
        'Response.Write(mysql)     '显示sql字符串,看看写错没有
        '错误陷阱
        Try
            mycmd.ExecuteNonQuery()
            Response.Write("<script>alert('\n 添加成功 \n');</script")
        Catch ex As Exception
            mycon.Close()
            Response.Write(ex.Message)
        Finally
            mycon.Close()
        End Try
    End Sub






[此贴子已经被作者于2006-8-15 1:24:57编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
 楼主| 发表于 2006-8-15 09:27:00 | 只看该作者
【编辑商品信息】
        和添加商品信息是一样的,只是把追加查询改为更新查询,这里我只是给出打开编辑商品信息的代码:他在一个新窗口里被打开:
Response.Write("<script language='javascript'>open('pinfo_edit.aspx?id=" & id & "','编辑','width=500,height=400,left=150,top=150,resizable=0,scrollbars=0,status=no,toolbar=no,location=no,menu=no')</" & "script>")
【datagrid的批量更改】
        又回到datagrid来了,没错,我说过datagrid是asp.net中最复杂的控件,我们在datagrid中添加一个复选框,被选中的就被更改:这个复选框是如何被添加进去的呢?前面已经说过了:就是用模版编辑功能:

    '修改订单状态事件
    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
        Dim tate As String
        tate = DropDownList1.SelectedItem.Text
        Dim objch As CheckBox
        Dim item As DataGridItem
        For Each item In DataGrid1.Items
            objch = item.FindControl("checkbox1")
            If objch.Checked = True Then
                Dim mylist As String
                mylist = item.Cells(0).Text
                Dim mysql As String
                mysql = " UPDATE tab_salelist SET lstate='" & tate & "' where listid='" & mylist & "'"
                mycon.Open()
                Dim mycmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(mysql, mycon)
                mycmd.ExecuteNonQuery()
            End If
        Next
        Response.Write("<script>alert('\n 修改成功 \n');</script")
        BindGrid()
End Sub
【datagrid的筛选】
       筛选的实现我们在access里已经很明确了,就是更改数据源就行了,这里要说给大家听的是,在asp.net里面,储存一些公用变量要用的一些对象,这里我们用的是:viewstate
这个对象在本页面关闭以后就随之消失了:看看我的用法:
'筛选
    Private Sub DropDownList2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList2.SelectedIndexChanged
        Dim mytate As String
        mytate = DropDownList2.SelectedItem.Text
        If mytate = "全部" Then
            viewstate("sql") = "SELECT * FROM tab_salelist "
        Else
            viewstate("sql") = "SELECT * FROM tab_salelist  where lstate='" & mytate & "'"
        End If
        BindGrid()
    End Sub
【小结】
今天我们学习了:
在datagrid里显示货币的符号,以及格式表达式的相关知识
在datagrid里显示多行文本的办法,以及datagrid的模版编辑功能
在datagrid里实现筛选
在datagrid里实现批量更新
在新窗口中打开指定页面
浏览文本框的使用
添加图片的方法
Dropdownlist的数据加载方法
Asp.net中错误陷阱的写法

[此贴子已经被作者于2006-8-15 1:28:32编辑过]

5#
发表于 2006-8-15 17:13:00 | 只看该作者
xie xie!
6#
发表于 2006-8-15 18:35:00 | 只看该作者
啊  看的不是很清楚

有没有整套教程
7#
发表于 2006-8-18 03:56:00 | 只看该作者
真的很好.
8#
发表于 2006-9-1 05:30:00 | 只看该作者
我跟着做个下拉框,可是不能加载数据,能帮我看看改改吗?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
 楼主| 发表于 2006-9-1 11:17:00 | 只看该作者
但从一个页面分析不出来你的意图。下拉框的数据加载其实就是一个循环的过程。
10#
发表于 2006-9-3 07:04:00 | 只看该作者
哈哈,是我太菜不懂在事件中加:dropdownlist_add()

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 11:55 , Processed in 0.128355 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表