布袋 2010-03-12 18:49
实际应用效果,请查看网站:http://www.elinknet.cn
新闻页是:http://www.elinknet.cn/News.html
布袋 2010-03-12 18:39
web.config
<!-- http://localhost/News-ClassID51-ToPage2.html http://localhost/News.aspx?ClassID=51&topage=3 -->
<!-- 这个要写在前面,因为 classID有可能刚开始是没有读取的-->
<RewriterRule>
<LookFor>~/News-ClassID\-ToPage(\d{0,10})\.html</LookFor>
<SendTo>~/News.aspx?ToPage=$1</SendTo>
</RewriterRule>
<!-- &这个换成& 不然会出错 -->
<RewriterRule>
<LookFor>~/News-ClassID(\d{0,10})\-ToPage(\d{0,10})\.html</LookFor>
<SendTo>~/News.aspx?ClassID=$1&ToPage=$2</SendTo>
</RewriterRule>
News.aspx页面
<webdiyer:AspNetPager
EnableUrlRewriting="true"
UrlRewritePattern="./News-ClassID%ClassID%-ToPage{0}.html"
>
</webdiyer:AspNetPager>
布袋 2010-03-12 18:38
[quote]小宇儿:
恩,我也用了这个不过有个问题想问你
http://www.bzzckj.com/NewsList.aspx
这个页面当我点击左边的新闻类别的时候在分页怎么办,
直接点击新闻过来的时候分页和你上面说的是一样的。[/quote]
ASPNETPAGER 官方的解释是
该属性仅当 UrlPaging 的值为true时才有效。要重写的Url路径可以是相对于当前的Url路径,如:../pagelist_{0}.aspx ,也可以是绝对路径,如:http://www.webdiyer.com/articles/{0}.aspx ,用“{0}”占位符来表示AspNetPager分页控件的当页页索引值,用“%参数名%”表示Url中相应的参数的值。如果不设置该值,默认值为当前页面路径加下划线后跟页索引, 如当前Url是 http://www.webdiyer.com/articlelist.aspx ,不设置 UrlRewritePattern 时,第一页的默认路径就是 http://www.webdiyer.com/articlelist_1.aspx ,第二页就是 http://www.webdiyer.com/articlelist_2.asp ,依次类推。以下举例说明如何设置重写格式:
1、原始Url:http://www.webdiyer.com/articlelist.aspx?type=aspnet&page=2(其中参数page=2为AspNetPager传递的页索引参数,这个参数名可以通过UrlPageIndexName属性设置,默认值为“page”)
重写为:http://www.webdiyer.com/articlelist/aspnet/2.aspx ,则应设置:UrlRewritePattern="./articlelist/%type%/{0}.aspx";
2、原始Url:http://www.webdiyer.com/articlelist.aspx?type=dotnet&subtype=aspnet&page=3 (其中参数page=3为AspNetPager传递的页索引参数,这个参数名可以通过UrlPageIndexName属性设置,默认值为“page”)
重写为:http://www.webdiyer.com/articlelist/dotnet/aspnet/page_3.aspx ,则应设置:UrlRewritePattern="./articlelist/%type%/%subtype%/page_{0}.aspx";
根据以上的实例,可以自行演变一下,带二个参数以上的代码如下:
[code=vbnet]
web.config
<!-- http://localhost/News-ClassID51-ToPage2.html http://localhost/News.aspx?ClassID=51&topage=3 -->
<!-- 这个要写在前面,因为 classID有可能刚开始是没有读取的-->
<RewriterRule>
<LookFor>~/News-ClassID\-ToPage(\d{0,10})\.html</LookFor>
<SendTo>~/News.aspx?ToPage=$1</SendTo>
</RewriterRule>
<!-- &这个换成& 不然会出错 -->
<RewriterRule>
<LookFor>~/News-ClassID(\d{0,10})\-ToPage(\d{0,10})\.html</LookFor>
<SendTo>~/News.aspx?ClassID=$1&ToPage=$2</SendTo>
</RewriterRule>
News.aspx页面
<webdiyer:AspNetPager
EnableUrlRewriting="true"
UrlRewritePattern="./News-ClassID%ClassID%-ToPage{0}.html"
>
</webdiyer:AspNetPager>
[/code]
小宇儿 2010-03-07 22:15
恩,我也用了这个不过有个问题想问你
http://www.bzzckj.com/NewsList.aspx
这个页面当我点击左边的新闻类别的时候在分页怎么办,
直接点击新闻过来的时候分页和你上面说的是一样的。
布袋 2010-02-12 02:49
补充:
首先在以下地址:
http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
下载 MS 的 URLRewriter.dll,放到你的web程序的bin下。
注:以上地址下载的是微软的一个完整的 URLrewrite 技术示例。下载后是一个 MSDNURLRewriting.msi 文件,安装在本地机上,安装后,在安装目录内有三个文件夹,分别是:ActionlessForm ,RewriterTester,URLRewriter 这三个目录。 其中 URLRewriter 文件夹便是一个完整的 URLRewrite 的项目示例。此项目中的 BIN 目录中有两 个 dll,分别为
ActionlessForm.dll 和 URLRewriter.dll ,这两个 dll 就是项目 ActionlessForm 和 URLRewriter 产生的 dll 类库,是示例项目 RewriterTester 实现 URLRwrite 技术所用到的类库文件。
如何把此技术应用到你自己的项目中去,其实很简单:
首先,把 ActionlessForm.dll 和 URLRewriter.dll 两个 dll 文件放到你自己项目中的 bin 目录下。
然后,修改你的 web.config 文件,完整的 web.config 文件如下:
(只需在普通的 web.config 文件中填加两个地方)
----------------------------------------------
1、
在 </configSections> 标签上面填加:
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
2、
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>
--------------------------------------------
然后,你的 aspx 程序就会按照你 web.config 文件中的 正则表达式,转换url 请求地址,实现 urlrewrit 技术。
比如:
1、http://localhost:4789/GuanTestURLRewrit/2003/07/18.aspx
按照 web.config 文件中的正则,此 url 地址为被 重写到以下真实存在的地址
http://localhost:4789/GuanTestURLRewrit/ShowBlogContent.aspx?year=2003&month=7&day=18
2、http://localhost:4789/GuanTestURLRewrit/2003/default.aspx
按照 web.config 文件中的正则,此 url 地址为被 重写到以下真实存在的地址
http://localhost:4789/GuanTestURLRewrit/ShowBlogContent.aspx?year=2003
3、http://localhost:4789/GuanTestURLRewrit/Products/Confections.aspx
按照 web.config 文件中的正则,此 url 地址为被 重写到以下真实存在的地址
http://localhost:4789/GuanTestURLRewrit/ListProductsByCategory.aspx?CategoryID=3
可以自己定义自己的正则表达式实现不同的 url 重写规则
如果您想把 aspx 重写成 html 后辍名,那么则需要改动一下你的 web.config 文件,
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
这样好像还不行,那是因为在IIS里面无法解析.html后缀名(具体我也不知道怎么叫...)
然后这样操作:
右键点我的电脑-->管理-->展开'服务和应用程序'-->internet信息服务-->找到你共享的目录-->右键点击属性 -->点击'配置'-->
映射下面 -->找到.aspx的可执行文件路径 复制路径-->粘贴路径-->扩展名为".html"-->然后把检查文件是否存在的勾去掉 这样就可以了
引用 ActionlessForm.dll 文件,是因为当页面中有Post数据(如Post文本)。那么这时重写后的URL就会变为:http://localhost/Test/2004/12/News.aspx?ID=12 真实的 url,露出原始的地址了,这显然是不完善的,
附:为什么URL就会变为:http://localhost/Test/2004/12/News.aspx?ID=12
其实很简单,因为在web.config中有这样的一句:
<SendTo>~/Default.aspx?ID=$2</SendTo>
在没有替换form之前,你查看页面的源码就可以看到,你的form的Action是到(以上面的例子):Default.aspx?ID=12
即.aspx页面最后生成的HTML是:
<form id="Form1" name="Form1" method="post" action="Default.aspx?ID=12"></form>
解决方述问题方法:
首先把ActionlessForm.dll拷入你的项目中的bin目录,然后在你的VS.net的项目中引用这个dll。再在你原有的(即没重写的).aspx页面中
第一步:把这句加于代码顶部:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
第二步:
<form id="Form1" method="post" runat="server">和</form>
替换成:
<skm:Form id="Form1" method="post" runat="server">和</skm:Form>
这样,当此页面有回发数据时,则不会跳到真实的 url 上去。
来源:http://hi.baidu.com/ucfar/blog/item/b017ca3f5524ae3470cf6c5c.html
lerit 2010-02-07 20:56
好文章!之前看见关于页面静态的文章,一般都不进来,因为自己确实不懂,什么静态,伪静态的,今天读了此文章,有了个初步的理解,多谢了@!
王昊_ 2009-03-21 15:43
学习了!
汗 2008-07-14 19:37
写死的三级怎么能说成是无限级呢?
布袋 2008-07-11 15:36
心得:
还是用控件方便快捷多了 !
文幸 2008-06-01 14:36
不知道怎么下载,给传过来行不
布袋 2008-04-29 21:15
读取的都是服务器端的,好像并没有什么实际意义!
布袋 2008-04-21 23:51
过了二个多月,自己好好看了下代码,本以为很困难很困难的嵌套问题,终于也解决了!
关注二个最重要的
onRowDataBound
e.Row.Findcontrol
这二个
Gridview.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="GridView3.aspx.vb" Inherits="GridView3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView 三层嵌套</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!--第一层GridView开始-->
<asp:GridView ID="GridView1" AutoGenerateColumns="False" OnRowDataBound="getGridView2" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" ShowHeader="False" Width="253px">
<Columns>
<asp:TemplateField ShowHeader="False" >
<ItemTemplate>
<%#Container.DataItem.ToString()%>
<!--第二层GridView开始-->
<asp:GridView ID="GridView2" AutoGenerateColumns="false" OnRowDataBound="getGridView3" runat="server" Height="133px" Width="599px" ShowHeader="False">
<Columns>
<asp:TemplateField >
<ItemTemplate>
_______<%#Container.DataItem.ToString %>
<asp:GridView ID="gridView3" ShowHeader="false" AutoGenerateColumns="false" runat="server" >
<Columns >
<asp:TemplateField >
<ItemTemplate >
___________________<%#Container.DataItem.ToString%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<!--第二层GridView开始-->
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="Tan" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:GridView>
<br />
<br />
---------------------------------------------------<br />
<asp:GridView ID="GridView4" runat="server" BackColor="White" BorderColor="#999999"
BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical">
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#DCDCDC" />
</asp:GridView>
<!--第一层GridView开始-->
</div>
</form>
</body>
</html>
Gridview.vb
Imports System
Imports System.Data
Imports System.Data.SqlClient
Partial Class GridView3
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'gridView1.DataSource = newArrayList("Gridview1Item:")
Me.GridView1.DataSource = newArrayList("GridViewItem1:")
Me.GridView1.DataBind()
End Sub
Protected Sub getGridView2(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If (e.Row.RowType = DataControlRowType.DataRow) Then
'表示为数据行
Dim gridview2 As GridView = CType(e.Row.FindControl("gridView2"), GridView)
gridview2.DataSource = newArrayList("GridViewITEM2:")
gridview2.DataBind()
gridview2.Dispose()
End If
End Sub
Protected Sub getGridView3(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If (e.Row.RowType = DataControlRowType.DataRow) Then
Dim gridview3 As GridView = CType(e.Row.FindControl("gridView3"), GridView)
gridview3.DataSource = Me.newArrayList("gridview3:")
gridview3.DataBind()
gridview3.Dispose()
End If
End Sub
Protected Function newArrayList(ByVal GetStr As String) As ArrayList
Dim al As ArrayList = New ArrayList
Dim i As Integer = 1
For i = 1 To 5
al.Add((GetStr + i.ToString))
Next
Return al
End Function
End Class
布袋 2008-04-20 17:16
GridView的常用操作
//判断当前行是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
{
}
void BindData()
{
string sql = "select top 10 ID,jobno,jobfixno,jobtype from jobse";
SqlDataAdapter myda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
myda.Fill(ds, "RusTable");
GridView1.DataSource = ds.Tables["RusTable"].DefaultView;
GridView1.DataBind();
conn.Close();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
(GridViewRow row=GridView1.Rows[e.NewEditIndex])
BindData();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
BindData();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
TextBox tb = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox001");
string dkvalue = GridView1.DataKeys[e.RowIndex].Value.ToString();
string sql1 = "update jobse set jobno='" + tb.Text.ToString() + "' where id='" + dkvalue + "'";
conn.Open();
SqlCommand cmd = new SqlCommand(sql1, conn);
cmd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
BindData();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];
…………………………………………………………
BindData()
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.SelectedRow;
…………………………………………………………
}
布袋 2008-04-20 15:34
有过web开发的人都知道GridView是个很不错而且用的非常广泛的控件,可是它又有很大的灵活性。
RowDataBound事件 在创建gridView控件时,必须先为GridView的每一行创建一个GridViewRow对象,创建每一行时,将引发一个RowCreated事件;当行创建完毕,每一行GridViewRow就要绑定数据源中的数据,当绑定完成后,将引发RowDataBound事件。如果说我们可以利用RowCreated事件来控制每一行绑定的控件,那么我们同样可以利用RowDataBound事件来控制每一行绑定的数据,也就是让数据如何呈现给大家。
还举同样的例子,在数据表中,存在性别列,上面我们用DropListDown控件的DataBounding来表示出了中文的性别,但是毕竟不太美观,我们现在可以利用Label控件和RowDataBound事件来实现完美的中文性别显示。RowDataBound,
首先,还是把性别列,设置为模板列,并添加一个Label控件,将Label控件绑定到数据源的性别段,然后我们在GridView控件属性的事件列表中双击RowDataBound,生成如下事件:
Example:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//判断当前行是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
{ //用FindControl方法找到模板中的Label控件
Label lb1= (Label)e.Row.FindControl("Label1");
//因为RowDataBound是发生在数据绑定之后,所以我们可以
//判断Label绑定的数据,如果是True,就更改其text属性为男
if (lb1.Text== "True")
lb1.Text = "男";
else
lb1.Text = "female";
}
}
3、RowType
RowType可以确定GridView中行的类型,RowType是玫举变量DataControlRowType中的一个值。RowType可以取值包括 DataRow、Footer、Header、EmptyDataRow、Pager、Separator。很多时候,我们需要判断当前是否是数据行,通过如下代码来进行判断 :
if (e.Row.RowType == DataControlRowType.DataRow)
4、RowDeleting和RowDeleted事件
RowDeleting发生在删除数据之前,RowDeleted发生在删除数据之后。
使用RowDeleting事件,可以在真正删除前再次确认是否删除,可以通过设置GridViewDeleteEventArgs.Cancel=True来取消删除;也可以用于判断当前数据库记录数,如果只剩一条记录且数据库不能为空则提示并取消删除操作。
使用RowDeleted事件,可以在删除后,通过GridViewDeletedEventArgs的Exception属性判断删除过程中是否产生异常,如无异常,则可以显示类似于” 1 Records deleted” 之类的提示信息。
Example:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//取得当前行号,并取得当前行的GridViewRow对象
int index=e.RowIndex ;
GridViewRow gvr=GridView1.Rows[index];
//取得当前行第二个单元格中的文字
str1 = gvr.Cells[1].Text;
//进行提示
Message.Text ="您将删除一个用户,其姓名为"+str1 ;
}
protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
//如果没有产生异常,则提示成功删除,否则提示删除失败
if (e.Exception == null)
Message.Text += "<br>您成功删除了"+str1 ;
else
Message.Text += "删除失败,请联系管理员";
}
5、RowEditing事件
在GridView中的行进入编辑模式之前,引发RowEditing事件,如果您需要在编辑记录前进行某些预处理,可以在这里操作。如果想取消对当前行的编辑,可以把GridViewEditEventArgs 对象的 Cancel 属性设置为 true即可。
Example:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
//用NewEidIndex取得当前编辑的行号,然后获取gridviewrow对象
GridViewRow gvr = GridView1.Rows[e.NewEditIndex];
//判断,如果当前编辑行姓名栏为admin用户,则取消对当前行的编辑
if (gvr.Cells[1].Text =="admin")
e.Cancel = true;
}
6、RowUpdating和RowUpdated事件
RowUpdating事件发生在更新数据源之前,RowUpdated发生在更新数据源之后。
我们可以在记录更新前利用RowUpdating做一些预处理工作,比如修改密码时,因为密码在数据库中不是明文存储,进行了hash,所以在更新密码前,应该生成其hash值,再进行更新操作。RowUpdated则可以检验更新是否成功。
Example:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow gvr = GridView1.Rows[GridView1 .EditIndex ];
//寻找输入密码的控件
TextBox tb1 = (TextBox)gvr.FindControl("tb_password");
//将此控件中的文本hash后,把password存入NewValues这个字典中
e.NewValues ["password"] =tb1.Text .GetHashCode().ToString () ;
}
protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
//如无异常,则更新成功
if (e.Exception == null)
Message.Text += "更新成功!";
}
7、Keys、OldValues、NewValues****
Keys字典中一般存放的是数据源中的主键字段的key和value的对应值,如果主键由多个字段组成,那么Keys为每个键字段添加其字段名称和值。OldValues中存放的是要更新的行的字段名和原始值,每个字段为其中的一项。NewValues中存放的是要更新的行的字段名和修改后的值,每个字段为其中的一项。注意,主键字段只存放于keys****中。
这三个****中的每一项都是DictionaryEntry类型的对象,我们可以用DictionaryEntry.Key来确定一个项的字段名称,用DictionaryEntry.Value来确定某项的值。
在上面的例子中,为了把密码明文加密后再存入数据库,我们利用了NewValues字段,重新设置key为password的项的值。为了保证安全性,我们在更新数据前对NewValues中的所有值进行html编码:
Example1:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//遍历NewValues,取得其中每一对DictionaryEntry对象
foreach (DictionaryEntry de in e.NewValues)
//de.key就是字段名,如果此处单独更新某字段的话,也可以直接填写字段名,//比如 e.NewValues[“password”
e.NewValues[de.Key] = Server.HtmlEncode(de.Value.ToString());
}
Example2:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//分别利用Keys、OldValues、NewValues取得主键名、原始数据和更新后数据
Message .Text = e.Keys["username"] + "的email地址从" + e.OldValues["email"] + "变更为" + e.NewValues["email"];
}
布袋 2008-04-19 16:35
GridView中使用超链接的技巧
数据绑定方式有两种,如下示例:
Eval方式 <%# Eval("id") %>
Bind方式 <%# Bind("id","~/info.aspx?id={0}") %>
推荐使用第一种方式,可以在一个<%# %>里放入多个绑定,
<%# Eval("id") + ":" + Eval("name")%>
而第二种只能如此绑定一个值
做超级链接的控件,我们也有多种选择:
1 asp:LinkButton
示例
<asp:LinkButton ID="LinkButton2" OnClientClick=<%# "window.open('info.aspx?id=" + Eval("id") + "&name=" + Eval("name") + "')" %> runat="server"><%# "LinkButton方式绑定:" + Eval("id") %></asp:LinkButton>
2 asp:HyperLink
示例
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>' Text='<%# "HyperLink控件:" + Eval("id") %>'></asp:HyperLink>
3 a标签
示例
<a href='<%# "info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>'>a标签:<%# Eval("id") + ":" + Eval("name")%></a>
<a href='javascript:alert("<%# "~/info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>")'>链接js事件:<%# Eval("id") %></a>
LinkButton 不好设置,推荐使用HyperLink或者a的方式,简单实用。特别是a标签,使用javascript的方法也比较方便。
补充:
<asp:LinkButton ID="LinkButton3" runat="server" PostBackUrl='<%# "~/Default.aspx?id=" + Eval("FUserID") %>'
CausesValidation="False" Text="跳转编辑"></asp:LinkButton>
布袋 2008-04-15 16:53
添加引用System.Management
Imports System
Imports System.management
Partial Class getPcInfo
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write(getMacAdd())
End Sub
Function getMacAdd() As String
'获取网卡硬件地址
Dim macaddress As String = ""
Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = mc.GetInstances
For Each mo As ManagementObject In moc
If (CType(mo("IPEnabled"), Boolean) = True) Then
' Console.WriteLine("MAC address"& vbTab&"{0}", mo("MacAddress").ToString
macaddress = "MAC address" + mo("MacAddress").ToString
End If
mo.Dispose()
Next
Return macaddress
End Function
End Class
布袋 2008-03-18 23:25
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx
Private Function GetRemoteData(ByVal Unknown As url) As function
Dim xmlhttp As var = New ActiveXObject("Microsoft.XMLHTTP")
Try
xmlhttp.open(Microsoft.VisualBasic.ChrW(71), url, false)
If (xmlhttp.status = 200) Then
Return xmlhttp.responseText
End If
Throw
Catch As e
Return
End Try
End Function
布袋 2008-03-15 16:18
另一种方法:ASP+JS
Register.asp
<script language=JavaScript>
function checkUser()
{
document.scripts['checkUserID'].src = 'checkUser.asp?user_email='+myform.user_email.value;
}
</script>
<script id="checkUserID" language="JavaScript" type="text/javascript" src=""></script>
<form name='myform'>
<input onBlur="return checkUser()" type="text" name="user_email" size="20"> <span id="UserEmailID"></span>
</form>
CheckUser.asp
<%
user_email=Request.QueryString("user_email")
if instr(user_email,"@") <= 0 or instr(user_email,".") <= 0 then
str = "document.getElementById('UserEmailID').innerHTML='Email格式不正确';"
Response.Write str
Response.End
End if
if conn.execute("select count(user_email) from Members where user_email='"&user_email&"'")(0) <> 0 then
str = "document.getElementById('UserEmailID').innerHTML='<img src=\'Imgs/btnClose.gif\'> EMAIL 已被占用';"
else
str = "document.getElementById('UserEmailID').innerHTML='Ok';"
end if
Response.Write str
conn_close()
%>
布袋 2008-02-26 17:34
--引用--------------------------------------------------
笑疯^_^: 我觉得那没有意义
--------------------------------------------------------
没有意议是指 效率问题,还是??
布袋 2008-02-26 17:33
@第一控制.NET
是不是写的很烂呀?
偶也是刚学的,现在还不懂的
嵌套查询耶,有不足之处请指出,谢了!
笑疯^_^ 2008-02-26 17:29
我觉得那没有意义
第一控制.NET 2008-02-26 16:50
这代码太有水平了,汗一个。。。你不怕sql注入吗?
布袋 2008-02-26 16:34
USE [doughty_bbs]
GO
/****** 对象: Table [dbo].[Small_Class] 脚本日期: 02/26/2008 16:17:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Small_Class](
[SmallClass_ID] [int] IDENTITY(1,1) NOT NULL,
[BigClass_ID] [int] NULL,
[SmallClass_Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Enable] [bit] NULL,
[Memo] [varchar](300) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_Small_Class] PRIMARY KEY CLUSTERED
(
[SmallClass_ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
布袋 2008-02-26 16:32
<?xml version="1.0" encoding="utf-8"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
<appSettings/>
<connectionStrings>
<add name="doughty_bbsConnectionString" connectionString="Data Source=.;Initial Catalog=doughty_bbs;User ID=sa;Password=1."
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<!--
设置 compilation debug="true" 可将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只应在开发过程中设置
此值。
Visual Basic 选项:
设置 strict="true" 将禁止所有会导致
数据丢失的类型转换。
设置 explicit="true" 将强制声明所有变量。
-->
<compilation debug="false" strict="false" explicit="true" />
<pages>
<namespaces>
<clear />
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<add namespace="System.Web.UI.WebControls.WebParts" />
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
</pages>
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows" />
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<!-- 全球化
此节设置应用程序的全球化设置。
-->
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
</system.web>
</configuration>
布袋 2008-02-17 02:24
【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引
清华大学出版社《ASP.NET第一步—基于C#和ASP.NET 2.0》试读&出版
http://www.cnblogs.com/lovecherry/archive/2007/06/18/788171.html
《ASP.NET第一步》 现在已在第二书店和读书频道上线,地址分别是:
http://book.csdn.net/bookfiles/406/
http://www.dearbook.com.cn/book/191853
China-Pub购买地址
http://www.china-pub.com/computers/common/info.asp?id=35205
说明:
本指南由网友自愿参与翻译,翻译不当之处还望大家指出
英文版本
导言
创建一个数据访问层
创建一个业务逻辑层
母板页和站点导航
基本报表
使用ObjectDataSource展现数据
声明参数
编程设置ObjectDataSource的参数值
主/从
使用DropDownList过滤的主/从报表
使用两个DropDownList过滤的主/从报表
跨页面的主/从报表
使用GridView 和DetailView实现的主/从报表
自定义格式化
基于数据的自定义格式化
在GridView控件中使用TemplateField
在DetailsView控件中使用TemplateField
使用FormView 的模板
在GridView的页脚中显示统计信息
编辑插入和删除数据
概述插入、更新和删除数据
研究插入、更新和删除的关联事件
在ASP.NET页面中处理BLL/DAL层的异常
给编辑和新增界面增加验证控件
定制数据修改界面
实现开放式并发
为删除数据添加客户端确认
基于用户对修改数据进行限制
分页和排序
分页和排序报表数据
大数据量时提高分页的效率
排序自定义分页数据
创建自定义排序用户界面
自定义按钮行为
GridView里的Button
使用DataList和Repeater显示数据
用DataList和Repeater来显示数据
格式化DataList和Repeater的数据
使用DataList来一行显示多条记录
数据控件的嵌套
使用DataList和Repeater过滤数据
使用DropDownList过滤的主/从报表
跨页面的主/从报表
使用Repeater和DataList实现的主/从报表
使用DataList编辑和删除数据
综叙:在DataList里编辑和删除数据
批量更新
处理BLL和DAL的异常
在编辑和插入界面里添加验证控件
自定义DataList编辑界面
实现开放式并发
为删除数据添加客户端确认
基于用户对修改数据进行限制
DataList和Repeater的分页和排序
DataList和Repeater数据分页
DataList和Repeater数据排序(一)
DataList和Repeater数据排序(二)
DataList和Repeater数据排序(三)
DataList和Repeater的自定义按钮行为
DataList和Repeater里的自定义button
特别感谢有些伤感,近一半的文档都是他翻译的。
46之后可以在下面的地址找到:
http://www.cnblogs.com/Reeezak/archive/2007/08/13/853925.html
50之后可以在下面的地址找到:
http://blog.csdn.net/heker2007/archive/2007/06.aspx
来源:
http://www.cnblogs.com/lovecherry/archive/2006/07/02/440840.aspx
布袋 2008-02-17 01:46
【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引
清华大学出版社《ASP.NET第一步—基于C#和ASP.NET 2.0》试读&出版
http://www.cnblogs.com/lovecherry/archive/2007/06/18/788171.html
《ASP.NET第一步》 现在已在第二书店和读书频道上线,地址分别是:
http://book.csdn.net/bookfiles/406/
http://www.dearbook.com.cn/book/191853
China-Pub购买地址
http://www.china-pub.com/computers/common/info.asp?id=35205
说明:
本指南由网友自愿参与翻译,翻译不当之处还望大家指出
英文版本
导言
创建一个数据访问层
创建一个业务逻辑层
母板页和站点导航
基本报表
使用ObjectDataSource展现数据
声明参数
编程设置ObjectDataSource的参数值
主/从
使用DropDownList过滤的主/从报表
使用两个DropDownList过滤的主/从报表
跨页面的主/从报表
使用GridView 和DetailView实现的主/从报表
自定义格式化
基于数据的自定义格式化
在GridView控件中使用TemplateField
在DetailsView控件中使用TemplateField
使用FormView 的模板
在GridView的页脚中显示统计信息
编辑插入和删除数据
概述插入、更新和删除数据
研究插入、更新和删除的关联事件
在ASP.NET页面中处理BLL/DAL层的异常
给编辑和新增界面增加验证控件
定制数据修改界面
实现开放式并发
为删除数据添加客户端确认
基于用户对修改数据进行限制
分页和排序
分页和排序报表数据
大数据量时提高分页的效率
排序自定义分页数据
创建自定义排序用户界面
自定义按钮行为
GridView里的Button
使用DataList和Repeater显示数据
用DataList和Repeater来显示数据
格式化DataList和Repeater的数据
使用DataList来一行显示多条记录
数据控件的嵌套
使用DataList和Repeater过滤数据
使用DropDownList过滤的主/从报表
跨页面的主/从报表
使用Repeater和DataList实现的主/从报表
使用DataList编辑和删除数据
综叙:在DataList里编辑和删除数据
批量更新
处理BLL和DAL的异常
在编辑和插入界面里添加验证控件
自定义DataList编辑界面
实现开放式并发
为删除数据添加客户端确认
基于用户对修改数据进行限制
DataList和Repeater的分页和排序
DataList和Repeater数据分页
DataList和Repeater数据排序(一)
DataList和Repeater数据排序(二)
DataList和Repeater数据排序(三)
DataList和Repeater的自定义按钮行为
DataList和Repeater里的自定义button
特别感谢有些伤感,近一半的文档都是他翻译的。
46之后可以在下面的地址找到:
http://www.cnblogs.com/Reeezak/archive/2007/08/13/853925.html
50之后可以在下面的地址找到:
http://blog.csdn.net/heker2007/archive/2007/06.aspx
来源:
http://www.cnblogs.com/lovecherry/archive/2006/07/02/440840.aspx
布袋 2007-08-30 15:08
ADO.net 链接
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
conn = New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("www_22745678_comConnectionString").ConnectionString)
conn.Open()
end Sub
布袋 2007-08-30 15:07
web.config
<configuration>
<appSettings/>
<connectionStrings>
<add name="www_22745678_comConnectionString" connectionString="Data Source=APIAPIA;Initial Catalog=www_22745678_com;Persist Security Info=True;User ID=sa;Password=1."
providerName="System.Data.SqlClient" />
</connectionStrings>
布袋 2007-08-30 15:07
自定编号:
Sub PageIndex(ByVal sender As Object, ByVal e As DataListItemEventArgs)
Dim l As Label
l = e.Item.FindControl("itemIndex")
If Not l Is Nothing Then
l.Text = currentpage * PageSize + e.Item.ItemIndex + 1
End If
End Sub
Apiapia 2007-08-26 03:54
注意下
linkFirst.Enabled = False
翻页时应当就不会有BUG了 ,经历了半年了,有望可以解决
2007-08-26
布袋 2007-02-25 22:31
DataList 控件还支持 ItemCommand 事件,当用户单击某个没有预定义命令(如 edit 或 delete)的按钮时将引发该事件。您可以按照如下方法将此事件用于自定义功能:将某个按钮的 CommandName 属性设置为一个自己所需的值,然后在 ItemCommand 事件处理程序中测试这个值。例如,您可以在选择某项时使用这种方法.
布袋 2007-02-25 22:29
DataList 和Repeater 有点类似,不过DataList 除了可以将数据依照我们所制定的样版显示出来外,还可以对数据进行修改删除,他也是患有手写HTML恐惧症的朋友的福音,因为他可以在设计视图下直接编辑界面.
每个 DataList 必须最少定义一个 ItemTemplate;和Repeater一样,他有好几个模板辅助于定制列表的外观。下表将描述这些模板。
模板名称 说明
ItemTemplate 定义列表中项目的内容和布局。必选。
AlternatingItemTemplate 如果定义该模板,则确定替换项的内容和布局。如果未定义,则使用 ItemTemplate。
SeparatorTemplate 如果定义该模板,则在各个项目(以及替换项)之间呈现分隔符。如果未定义,则不呈现分隔符。
SelectedItemTemplate 如果定义该模板,则确定选中项目的内容和布局。如果未定义,则使用 ItemTemplate (AlternatingItemTemplate)。
EditItemTemplate 如果定义该模板,则确定正在编辑项目的内容和布局。如果未定义,则使用 ItemTemplate (AlternatingItemTemplate, SelectedItemTemplate)。
HeaderTemplate 如果定义该模板,则确定列表标题的内容和布局。如果未定义,则不呈现标题。
FooterTemplate 如果定义该模板,则确定列表脚注的内容和布局。如果未定义,则不呈现脚注。
每个模板都有自己的样式属性。例如,ItemTemplate 的样式通过 ItemStyle 属性设置。
属性中 布局和外观 两个选项影响 DataList 的整体呈现。
在 DataList 中选择项目
通过 SelectedItemTemplate 属性可以自定义选定项目的内容和外观。SelectedItemTemplate 由 SelectedIndex 属性进行控制。SelectedIndex 的默认值为 -1,这意味着列表中没有任何项目被选中。当 SelectedIndex 设置到某个特定项目时,则使用 SelectedItemTemplate 显示该项目。
编辑 DataList 项目
DataList 控件通过其 EditItemTemplate 属性支持对项目数据进行就地编辑。在编辑项目时,EditItemTemplate 定义该项目的内容和外观。
DataList 还提供了三个可用于支持编辑操作的事件。当在列表的 ItemTemplate 上单击“编辑”命令按钮控件时,将引发 EditCommand。您应用自己的代码处理此事件。通常的逻辑是把 EditItemIndex 设置到选定的项目,然后将数据重新绑定到 DataList
EditItemTemplate 通常包含"更新"和"取消"命令按钮。这些按钮分别导致引发 UpdateCommand 和 CancelCommand 事件。您应用自己的代码来处理这些事件。"取消"的通常逻辑是把 EditItemIndex 设置成 -1,然后将数据重新绑定到 DataList
"更新"的通常逻辑是更新数据源,将 EditItemIndex 设置成 -1,然后将数据重新绑定到 DataList。下面的示例说明如何在 DataList 中编辑项目。
事件
DataList 事件可让您在运行时自定义项的创建过程。事件还为您提供了自定义 控件支持多种事件。
常用的事件为了响应列表项中的按钮单击而引发。这些事件旨在帮助您响应 DataList 控件的最常用功能。支持该类型的四个事件:
EditCommand
DeleteCommand
UpdateCommand
CancelCommand
若要引发这些事件,可将 Button 、LinkButton或 ImageButton 控件添加到 DataList 控件中的模板中,并将这些按钮的 CommandName 属性设置为某个关键字,如 edit、delete、update 或 cancel。当用户单击项中的某个按钮时,就会向该按钮的容器(DataList 控件)发送事件。按钮具体引发哪个事件将取决于所单击按钮的 CommandName 属性的值。例如,如果某个按钮的 CommandName 属性设置为 edit,则单击该按钮时将引发 EditCommand 事件。如果 CommandName 属性设置为 delete,则单击该按钮将引发 DeleteCommand 事件,依此类推。
DataList 控件还支持 ItemCommand 事件,当用户单击某个没有预定义命令(如 edit 或 delete)的按钮时将引发该事件。您可以按照如下方法将此事件用于自定义功能:将某个按钮的 CommandName 属性设置为一个自己所需的值,然后在 ItemCommand 事件处理程序中测试这个值。例如,您可以在选择某项时使用这种方法.