欢迎来到皮皮网网首页

【5.7.24源码】【奇迹源码泄露了吗】【怎么查询奶粉溯源码】datalist控件源码_datelist控件

来源:网页布局源码 时间:2024-11-25 10:35:15

1.C#语言做的电子相册系统
2.在datalist 中,控件控件删除checkbox选中的同行数据(asp.net)
3.Eval()和Bind()的区别
4.关于.net中的repeater
5.asp.net2005 自定义控件拖动不了

datalist控件源码_datelist控件

C#语言做的电子相册系统

       é¦–先需要在同级目录下建立文件夹FileSystem

       //后台代码:

       using System;

       using System.Collections;

       using System.ComponentModel;

       using System.Data;

       using System.IO;

       using System.Drawing;

       using System.Web;

       using System.Web.SessionState;

       using System.Web.UI;

       using System.Web.UI.WebControls;

       using System.Web.UI.HtmlControls;

       namespace WebShop

       {

        /// <summary>

        /// filesystem 的摘要说明。

        /// </summary>

        public class filesystem : System.Web.UI.Page

        {

        protected System.Web.UI.WebControls.LinkButton LinkButton1;

        protected System.Web.UI.WebControls.DataList DataList1;

        protected System.Web.UI.WebControls.Button Button3;

        protected System.Web.UI.WebControls.Button Button1;

        protected System.Web.UI.WebControls.TextBox TextBox1;

        protected System.Web.UI.WebControls.Button Button2;

        protected System.Web.UI.WebControls.Label Label2;

        protected System.Web.UI.WebControls.Label Label1;

        protected System.Web.UI.HtmlControls.HtmlInputFile fileFeild1;

        private void Page_Load(object sender, System.EventArgs e)

        {

        if(!IsPostBack)

        {

        Bind();

        }

        }

        private void Bind()

        {

        string initpath="";

        if(Request["path"]==null)

        {

        initpath=Server.MapPath("FileSystem");

        }

        else

        {

        initpath=Request["path"];

        }

        this.Label1.Text=initpath;

        DataTable dt=new DataTable();

        DataColumn dc0=new DataColumn("Image",System.Type.GetType("System.String"));

        dt.Columns.Add(dc0);

        DataColumn dc1=new DataColumn("Name",System.Type.GetType("System.String"));

        dt.Columns.Add(dc1);

        DirectoryInfo di=new DirectoryInfo(this.Label1.Text);

        DirectoryInfo[] dis=di.GetDirectories();

        foreach(DirectoryInfo d in dis)

        {

        DataRow dr=dt.NewRow();

        dr[0]="<a href='filesystem.aspx?path="+HttpUtility.UrlEncode(d.FullName,System.Text.Encoding.UTF8)+"'><img src='images/folder.gif' border=0/></a>";

        dr[1]=d.Name;

        dt.Rows.Add(dr);

        }

        FileInfo[] fis=di.GetFiles();

        foreach(FileInfo f in fis)

        {

        string ex=f.Extension.ToLower();

        if(ex==".jpg" || ex==".jpeg" || ex==".gif" || ex==".png" || ex==".bmp")

        {

        string fullname=f.FullName;

        string urlpath=fullname.Substring(fullname.IndexOf("FileSystem"));

        string url=HttpUtility.UrlEncode(urlpath,System.Text.Encoding.UTF8);

        DataRow dr=dt.NewRow();

        dr[0]="<a href='"+url+"' target='_blank'><img src='"+url+"' border=0 width= height=/></a>";

        dr[1]=f.Name;

        dt.Rows.Add(dr);

        }

        }

        this.DataList1.DataSource=dt;

        this.DataList1.DataBind();

        }

        #region Web 窗体设计器生成的代码

        override protected void OnInit(EventArgs e)

        {

        //

        // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

        //

        InitializeComponent();

        base.OnInit(e);

        }

        /// <summary>

        /// 设计器支持所需的方法 - 不要使用代码编辑器修改

        /// 此方法的内容。

        /// </summary>

        private void InitializeComponent()

        {

        this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);

        this.Button3.Click += new System.EventHandler(this.Button3_Click);

        this.Button1.Click += new System.EventHandler(this.Button1_Click);

        this.Button2.Click += new System.EventHandler(this.Button2_Click);

        this.Load += new System.EventHandler(this.Page_Load);

        }

        #endregion

        private void LinkButton1_Click(object sender, System.EventArgs e)

        {

        string Parent=Directory.GetParent(this.Label1.Text).ToString();

        if(Parent.IndexOf("FileSystem")>-1)

        {

        Response.Redirect("filesystem.aspx?path="+Parent);

        }

        else

        {

        return;

        }

        }

        private void Button1_Click(object sender, System.EventArgs e)

        {

        HttpPostedFile hpf=this.fileFeild1.PostedFile;

        string ClientPath=hpf.FileName;

        string filename=Path.GetFileName(ClientPath);

        string ex=Path.GetExtension(filename);

        if(ex==".jpg" || ex==".jpeg" || ex==".gif" || ex==".png" || ex==".bmp")

        {

        string SavePath=this.Label1.Text+"\\"+filename;

        hpf.SaveAs(SavePath);

        Bind();

        }

        else

        {

        Response.Write(Tools.GetAlertJS("所上传的图片格式不正确!"));

        return;

        }

        }

        private void Button2_Click(object sender, System.EventArgs e)

        {

        string filename=this.TextBox1.Text;

        Directory.CreateDirectory(this.Label1.Text+"\\"+filename);

        Bind();

        }

        private void Button3_Click(object sender, System.EventArgs e)

        {

        for(int i=0;i<this.DataList1.Items.Count;i++)

        {

        if(((CheckBox)this.DataList1.Items[i].FindControl("CheckBox1")).Checked)

        {

        int index=this.DataList1.Items[i].ItemIndex;

        string filePath=this.Label1.Text+"\\"+this.DataList1.DataKeys[index].ToString();

        if(Directory.Exists(filePath))

        {

        Directory.Delete(filePath,true);

        }

        if(File.Exists(filePath))

        {

        File.Delete(filePath);

        }

        Bind();

        }

        }

        }

        }

       }

       å‰å°é¡µé¢:

       <%@ Page language="c#" Codebehind="filesystem.aspx.cs" AutoEventWireup="false" Inherits="WebShop.filesystem" %>

       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

       <HTML>

        <HEAD>

        <title>filesystem</title>

        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

        <meta content="C#" name="CODE_LANGUAGE">

        <meta content="JavaScript" name="vs_defaultClientScript">

        <meta content="/intellisense/ie5" name="vs_targetSchema">

        <LINK href="CssStyle.css" type="text/css" rel="stylesheet">

        <form id="Form1" method="post" runat="server">

        </HEAD>

        <body MS_POSITIONING="GridLayout">

        <FONT face="宋体">

        <table cellSpacing="1" cellPadding="0" width="" align="center" bgColor="#" border="0">

        <tr>

        <td bgColor="#c" colSpan="3"><IMG src="images/FileSystemBaner.gif"></td>

        </tr>

        <tr>

        <td width="" bgColor="#e3e3e3" rowSpan="2"> 

        <asp:linkbutton id="LinkButton1" runat="server">后退</asp:linkbutton></td>

        <td width="" bgColor="#efefef" colSpan="2">   

        <asp:datalist id="DataList1" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" DataKeyField="Name"

        Width="">

        <ItemTemplate>

        <table width="" align="center">

        <tr>

        <td align="center" width=""></td>

        <td align="left" width=""><%#DataBinder.Eval(Container.DataItem,"Image")%>

        </td>

        </tr>

        <tr>

        <td width="" align="right">

        <asp:CheckBox ID="checkBox1" Runat="server" /></td>

        <td width="" align="left"><font face="宋体"><%#DataBinder.Eval(Container.DataItem,"Name")%></font></td>

        </tr>

        </table>

        </ItemTemplate>

        </asp:datalist></td>

        </tr>

        <tr>

        <td align="right" bgColor="#efefef" colSpan="2"><asp:button id="Button3" runat="server" Text="删除选中项"></asp:button> 

        <input id="fileFeild1" type="file" name="fileFeild1" runat="server">  

        <asp:button id="Button1" runat="server" Text="确定上传"></asp:button><br>

        <asp:textbox id="TextBox1" runat="server"></asp:textbox> 

        <asp:button id="Button2" runat="server" Text="创建目录"></asp:button></td>

        </tr>

        <tr>

        <td bgColor="#" colSpan="3"><span class="STYLE1"><asp:label id="Label2" runat="server" ForeColor="White"> 当前所在位置:</asp:label><SPAN class="STYLE1"><asp:label id="Label1" runat="server" ForeColor="White" Width="px"></asp:label></SPAN></span></td>

        </tr>

        </table>

        </FONT></FORM>

        </body>

       </HTML>

在datalist 中,删除checkbox选中的同行数据(asp.net)

       写一个方法,通过foreach来循环得到选中的checkbox,在checkbox上绑定ID <asp:CheckBox ID="ChkBox" ToolTip='<%#Eval("id")%>' runat="server" />

        foreach (Datalist item in this.datalist.Items)

        {

        CheckBox chkItem = (CheckBox)item.FindControl("ChkBox");

        if (chkItem.Checked)

        {

        //被勾选

        ids += chkItem.ToolTip + ",";

        }

        }

        if (ids != "")

        {

        ids = ids.Substring(0, ids.Length - 1);

        }

        return ids;

       然后后面删除时间的时候调用这个方法,只需要在SQL语句中 delete from table where id 这里用in就可以了(方法名)

Eval()和Bind()的区别

       Eval(

       "

       ")和Bind(

       "

       ") 这两种一个单向绑定,一个双向绑定

       bind是双向绑定,但需数据源可更改才能用

       ASP.NET

       2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem,

       fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。由于这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于Page(页面)层。当然,ASP.NET

       2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。

       ä¸‹é¢çš„例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模板(ItemTemplate)中的Image、Label和HyperLink控件。

       ï¼œasp:DataList

       ID=

       "DataList1

       "

       RepeatColumns=

       "5

       "

       Width=

       "

       "

       runat=

       "server

       "

       DataSourceID=

       "ObjectDataSource1

       ">

       ã€€ï¼œItemTemplate>

       ã€€ã€€ï¼œasp:HyperLink

       ID=

       "HyperLink1

       "

       runat=

       "server

       "

       NavigateUrl=

       '<%#

       Eval(

       "PhotoID

       ",

       "PhotoFormViewPlain.aspx?ID={ 0}

       ")

       %>

       '>

       ã€€ã€€ï¼œasp:Image

       ID=

       "Image1

       "

       Runat=

       "server

       "

       ImageUrl=

       '<%#

       Eval(

       "FileName

       ",

       "images/thumbs/{ 0}

       ")

       %>

       '

       /></asp:HyperLink>

       ã€€ã€€ï¼œasp:Label

       ID=

       "CaptionLabel

       "

       runat=

       "server

       "

       Text=

       '<%#

       Eval(

       "Caption

       ")

       %>

       '

       />

       ã€€ï¼œ/ItemTemplate>

       ï¼œ/asp:DataList><br

       />

       ï¼œasp:ObjectDataSource

       ID=

       "ObjectDataSource1

       "

       runat=

       "server

       "

       TypeName=

       "DataComponentTableAdapters.PhotosTableAdapter

       "

       SelectMethod=

       "GetPhotosForAlbum

       ">

       ã€€ã€€æ•°æ®ç»‘定也可以作为控件的主题定义(theme

       definition)的一部分,这样我们就可以通过改变主题来随意地改变模板化控件的布局和外观。但是Theme(主题)模板中只能使用Eval(或者后面讨论的Bind)。绑定到任意的用户代码是被禁止的。

       --------关注----------

       å¸¸è§ç»‘定格式,不过他们的性能有区别。

       <%#

       DataBinder.Eval(Container.DataItem,

       "[n]")

       %>

       <%#

       DataBinder.Eval(Container.DataItem,

       "ColumnName")

       %>

       <%#

       DataBinder.Eval(Container.DataItem,

       "ColumnName",

       null)

       %>

       <%#

       DataBinder.Eval(Container,

       "DataItem.ColumnName",

       null)

       %>

       <%#

       ((DataRowView)Container.DataItem)["ColumnName"]

       %>

       <%#

       ((DataRowView)Container.DataItem).Row["ColumnName"]

       %>

       <%#

       ((DataRowView)Container.DataItem)["adtitle"]

       %>

       <%#

       ((DataRowView)Container.DataItem)[n]

       %>

       <%#

       ((DbDataRecord)Container.DataItem)[0]

       %>

       <%#

       (((自定义类型)Container.DataItem)).属性.ToString()

       %>(如果属性为字符串类型就不用ToString()了)

       ä¸Šé¢è¿™ä¸‰ä¸ªæ€§èƒ½æœ€å¥½ã€‚

       //显示二位小数

       //<%#

       DataBinder.Eval(Container.DataItem,

       "UnitPrice",

       "${ 0:F2}")

       %>

       //{ 0:G}代表显示True或False

       //

       //

       <asp:Image

       Width=""

       Height=""

       Border="0"

       runat="server"

       //

       AlternateText='<%#

       DataBinder.Eval(Container.DataItem,

       "Discontinued",

       "{ 0:G}")

       %>'

       //

       ImageUrl='<%#

       DataBinder.Eval(Container.DataItem,

       "Discontinued",

       "~/images/{ 0:G}.gif")

       %>'

       />

       //

       //转换类型

       ((string)DataBinder.Eval(Container,

       "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4)

       { 0:d}

       æ—¥æœŸåªæ˜¾ç¤ºå¹´æœˆæ—¥

       { 0:yyyy-mm-dd}

       æŒ‰æ ¼å¼æ˜¾ç¤ºå¹´æœˆæ—¥

       { 0:c}

       è´§å¸æ ·å¼

       ---------------------------------------------------------

       åœ¨æœ¬ç« å‰é¢ï¼Œæˆ‘们在模板上下文中遇到过表达式以及Eval方法。Eval方法是一种定制运算符,在数据绑定表达式用来方法所绑定的数据项上的公共属性。前文所用的Eval方法是一个ASP.NET

       2.0才支持的特征,如果在ASP.NET

       1.x应用程序中使用,则会产生一个编译错误。对于ASP.NET的所有版本,我们可以使用一个在功能上相当的方法,该方法也称为Eval,但是来自另一个类——DataBinder。

       é‡è¦æç¤ºï¼š

       é€šè¿‡Eval方法(尽管它来自DataBinder或Pageç±»),可以访问所绑定的数据项上的公共属性。让我澄清一下公共属性在该上下文中指什么,以及为什么我坚持把它们叫做属性。任何一个实现了IEnumerable接口的类都可以绑定到一个控件。实际的类列表当然包括DataTable(其中一个数据项在逻辑上对应于表记录),但是它还包括定制集合(其中一个数据项对应于给定类的一个实例。)Eval方法最终会查询该数据项对象以得到它的属性集。表示一个表记录的对象将返回它的列描述符;其他对象将返回它们的公共属性集。

       DataBinder类支持数据绑定表达式的生成和解析。它的静态重载方法Eval特别重要。该方法使用反射机制来解析和计算一个运行时对象的表达式。Eval方法的客户包括RAD工具,诸如Microsoft

       Visual

       Studio

       .NET设计器和Web控件,它们以声明的方式调用该方法用动态改变的值填充这些属性。

       1.

       Eval方法

       DataBinder.Eval方法的语法如下:

       <%#

       DataBinder.Eval(Container.DataItem,

       expression)

       %>

       ä¸Šè¿°ä»£ç ç‰‡æ–­ä¸­çœç•¥äº†ç¬¬3个可选参数。该参数是一个字符串,包含所绑定值的格式选择。Container.DataItem表达式引用对该表达式进行计算的对象。该表达式通常是一个字符串,表示数据项对象上要访问的字段的名称。它可以是一个包括索引和属性名的表达式。DataItem属性表示当前容器上下文中的对象。容器通常即将生成的该数据项对象(例如,DataGridItem对象)的当前实例。

       å‰é¢æ‰€ç¤ºçš„代码通常重复出现,而且以相同的形式。只有表达式和格式字符串在页与页之间会有所变化。

       2.

       æ›´ç®€æ´çš„Eval

       DataBinder.Eval的原始语法在ASP.NET

       2.0中可以被简化,这一点我们在前面的Repeater示例中已经看到。在ASP.NET

       2.0中,只要在ASP.NET

       1.x中接受如下表达式的地方:

       <%#

       DataBinder.Eval(Container.DataItem,

       expression)

       %>

       å°±å¯ä»¥ä½¿ç”¨ï¼š

       <%#

       Eval(expression)

       %>

       ä¸ç”¨è¯´ï¼ŒASP.NET

       2.0也是完全支持DataBinder对象的。

       åœ¨<%#

       ...

       %>界定符内出现的任何代码,都会得到ASP.NET运行库的特殊处理。让我们简单分析一下该代码会发生什么。编译该页面时,Eval调用作为一个独立的调用插入该页面的源代码中。如下代码说明了会发生什么:

       object

       o

       =

       Eval("lastname");

       string

       result

       =

       Convert.ToString(o);

       è¯¥è°ƒç”¨çš„结果被转换为一个字符串,并付给一个数据绑定的文字控件——DataBoundLiteralControl类的一个实例。然而把数据绑定的文字插入该页的控件树中。

       åœ¨ASP.NET

       2.0中,TemplateControlç±»(Page的父类)实际上新增了一个名为Eval的受保护的(但不是虚拟的)方法。如下伪代码说明该方法的工作机制:

       protected

       object

       Eval(string

       expression)

       {

       if

       (Page

       ==

       null)

       throw

       new

       InvalidOperationException(…);

       return

       DataBinder.Eval(Page.GetDataItem(),

       expression);

       }

       æ­£å¦‚我们可以看到的,Eval是建立在DataBinder.Eval方法之上的一个简单包装。DataBinder.Eval方法使用当前容器的数据项调用。非常明显,当前容器的数据在数据绑定操作之外为null——即,在调用DataBind之后的调用栈中。这一事实引起了Eval和DataBinder.Eval之间的一个关键区别。

       é‡è¦æç¤ºï¼š

       TemplateControl的Eval是一个数据绑定方法,在一个数据绑定操作中只能在一个数据绑定控件的上下文中使用。相反,DataBinder.Eval是一个完全成熟的方法,可以在程序中的任何地方使用。我们通常在定制的数据绑定控件的实现中使用它。我将在本书的姐妹篇《Programming

       Microsoft

       ASP.NET

       2.0

       Applications:

       Advanced

       Topics

       ã€‹ä¸­ä»‹ç»å®ƒã€‚

       3.

       èŽ·å¾—默认的数据项

       å‰é¢ç»™å‡ºçš„说明页面的Eval方法的行为的伪码,展示了Page类的GetDataItem方法。它是什么?如前所述,这一简化语法采用一个默认的Container.DataItem上下文对象。GetDataItem只不过是返回该对象的函数。

       æ›´ç²¾ç¡®åœ°è®²ï¼ŒGetDataItem是跟踪页面的当前绑定上下文的基于栈的机制的终点。该控件树中的每个控件在调用各DataBind方法时压入该栈中。DataBind方法返回时,控件从该栈中弹出。如果栈是空的,并且企图以编程的方式调用Eval方法,则GetDataItem抛出一个无效的操作异常。总之,我们只能在模板中使用Eval简化操作;如果需要在代码中的任何其他地方访问一个数据项的属性,则利用DataBinder.Eval方法,并显式地指出数据项对象。

       æç¤º

       å¦‚前所述,通常只有在定制的数据绑定控件的代码中才需要直接调用DataBinder.Eval方法。(我在Programming

       Microsoft

       ASP.NET

       2.0

       Applications:

       Advanced

       Topics中介绍了定制控件。)然而,如果发生这种情况,可能需要通过调用DataBinder.GetPropertyValue方法来保存几个内部调用和CPU周期。最终,这完全是由DataBinder.Eval完成的。

关于.net中的repeater

       repeater使用的方法跟datalist差不多的,

       ç®€å•ç¤ºèŒƒä¸€ä¸ªï¼š

       <asp:Repeater id="Repeater_Test" runat="server">

        <HeaderTemplate>UserID UserName UserPWD</HeaderTemplate>

        <ItemTemplate>

        <br /><%#DataBinder.Eval(Container.DataItem,"userID") %>

        <%#DataBinder.Eval(Container.DataItem,"username") %>

        <%#DataBinder.Eval(Container.DataItem,"password") %>

        </ItemTemplate>

        </asp:Repeater>

       ---------------以上是Default.aspx源码处--------

       private DataTable DataTableToRepeater()

        {

        //自己生成一个DataTable给Repeapter当作数据源

        DataTable dt = new DataTable();

        dt.Columns.Add("userID");

        dt.Columns.Add("username");

        dt.Columns.Add("password");

        for (int i = 1; i < ; i++)

        {

        DataRow dr = dt.NewRow();

        dr[0] = i;

        dr[1] = "User" + i.ToString();

        dr[2] = "PWD" + i.ToString();

        dt.Rows.Add(dr);

        }

        return dt;

        }

       --------------为了方便调用,特意写了一个DataTable---------

       çª—体加载时

        if (!IsPostBack)

        {

        Repeater_Test.DataSource = DataTableToRepeater();

        Repeater_Test.DataBind();

        }

       -----------------窗体加载------------------

       UserID UserName UserPWD

       1 User1 PWD1

       2 User2 PWD2

       3 User3 PWD3

       4 User4 PWD4

       5 User5 PWD5

       6 User6 PWD6

       7 User7 PWD7

       8 User8 PWD8

       9 User9 PWD9

       -----------结果应该是这样的-----------

asp.net 自定义控件拖动不了

       选中你页面中的所有控件:点击菜单上的"布局"-->"位置"-->"绝对",设置为绝对定位之后,在将你的源码5.7.24源码控件拖放到相应位置就能解决了,否则的控件控件奇迹源码泄露了吗话你只能通过CSS样式表或者直接通过"源"来控制控件的位置...