澳门新葡萄京官网首页 4

澳门新葡萄京官网首页查看原图与缩略图(C#)

ASP.NET 中用 GridView
时,平时用到自定义模板(因为暗中认可的实在不可能满意大家的必要),而自定义时,往往少不了
Eval 来输出字段值。

多少绑定 (很早的时候做的笔记State of Qatar
 
一句话来讲属性
<%# textBox.txt%>
  Page.DataBind(State of Qatar;该办法将数据源绑定到被调用的服务器控件及其全部子控件
        <asp:TextBox ID=”TextBox1” runat=”server”
AutoPostBack=”True”
            ontextchanged=”TextBox1_TextChanged”></asp:TextBox>
        <asp:Label ID=”Label1” runat=”server” Text=”<%#
TextBox1.Text %>”></asp:Label>
        <br />
        <asp:Label ID=”Label2” runat=”server” Text=””><%=
Label1.Text %></asp:Label>
集中绑定
  <asp:ListBox ID=”ListBox1” runat=”server” DataSource=’<%#
t.getList() %>’ ></asp:ListBox>
t.getList(卡塔尔(قطر‎方法重临两个集结
相会绑定要采用数据源控件的DataSource属性
表达式
<%# (customer.FirstName+””+customer.LastName) %>
办法结果绑定
<%# t.getList() %>
末代绑定 迟绑定

思路

但 Eval
的内容并不一定很令大家知足,大家也许要先将其格式化一下再出口。

 

上传图片:

<asp:TemplateField HeaderText=”价格”> <ItemStyle
CssClass=”price” /> <ItemTemplate><%#
String.Format(“{0,5:0.00}”, Eval(“Price”)) %></ItemTemplate>
</asp:TemplateField>

命名容器
<%# DataBinder.Eval(Container.DataItem,”max_lvl”,”{0:c}” ) %>
参数:
>>>数据项的命名容器Container.DataItem
>>>数据字段名”max_lvl”
>>>格式字符串”{0:c}” 可选的能够不加
格式字符串
数字格式:
{0:c} 货币形式:¥100.10
{0:p}百分数样式:一成
{0:n}保留小数格局:100.100
日期格式:
{0:D}短日期格式 二零零六年11月二十日  
{0:F} 2005年3月23日 0:00:00
{0:G} 2005-3-21 0:00:00
{0:M} 3月23日
{0:R} Thu, 23 Mar 2005 00:00:00 GMT
{0:T} 0:00:00
{0:U} 2005年3月23 日 16:00:00
{0:Y} 2005年3月
Repeater控件
Model

每当上传三个图纸的时候,就依赖图片在数据库的ID创立一个文件夹寄存当前图片的的文书夹,把原来的图样根据一定的百分比进行缩短,缩短的图纸叫4_+图片名称,未有减弱的图纸,也正是原图,不做此外修饰。

如上,大家将 Price 字段的值经 String.Format 格式化后输出。顺便提一下
{0,5:0.00},它是之类意义:

<asp:Repeater ID=”Repeater1″ runat=”server”
            onitemcommand=”Repeater1_ItemCommand”>
            <ItemTemplate>
            符合规律突显的项
            </ItemTemplate>
            <AlternatingItemTemplate>
            交错项
            </AlternatingItemTemplate>
            <HeaderTemplate>
            头模版 ,页眉
            </HeaderTemplate>

当查问的时候就依赖ID,拼凑出二个门道,然后依照路线举行绑定图片。如果是缩略图,则查询4-+图片名称,原图就直接是本来图片的名目。

  • Price 保留两位小数输出(四舍五入),且小数相差两位时补零。
  • Price 算上小数点,算上小数(两位)不足伍个人时,前面加空白,补足八个人。

        <FooterTemplate>
        页脚
        </FooterTemplate>
        <SeparatorTemplate>
        间隔 ,分格
        </SeparatorTemplate>
</asp:Repeater>
                        
      
<asp:Repeater ID=”Repeater1″ runat=”server”>
      <HeaderTemplate>
         <b> 模板页眉<br /></b>
      </HeaderTemplate>
      <SeparatorTemplate>
      <hr color=blue size=1 />
      </SeparatorTemplate>
      <ItemTemplate>
          <%# DataBinder.Eval(Container.DataItem,”Title”) %>
          <br />
      </ItemTemplate>
      <AlternatingItemTemplate>
          <font color=”gray”>
              <%# DataBinder.Eval(Container.DataItem,”Title”)
%>
              <br />
          </font>
      </AlternatingItemTemplate>
      <FooterTemplate>
         <b> 模板页脚</b></FooterTemplate>
  </asp:Repeater>
                                        
<%# DataBinder.Eval(Container.DataItem,”Title”) %>
Container 命名容器

福寿无疆效果与利益,当点击小图的时候,能够查看大图。

再看下日期的

分页数据源::  PagedDataSource //可分页数据源
Demo

 那是在页面展现的图纸:

<ItemTemplate><%#
Convert.ToDateTime(Eval(“ExpireDate”)).ToString(“yyyy-MM-dd”)
%></ItemTemplate>

澳门新葡萄京官网首页 1澳门新葡萄京官网首页 2代码

当点击小图时,查见到的大图片。澳门新葡萄京官网首页 3 

再看下自定义方法的

        int pagetCount = Convert.ToInt32(this.Label1.Text);
        SqlConnection con = DB.con;
        SqlDataAdapter sda = new SqlDataAdapter();
        DataSet ds = new DataSet();
        PagedDataSource ps = new PagedDataSource(卡塔尔(قطر‎;//可分页数据源
        sda.SelectCommand = new SqlCommand(“select top(90) * from books”, con);
        try
        {
            con.Open();
            sda.Fill(ds, “books”);
            ps.DataSource = ds.Tables[“books”].DefaultView;//先导化可分页数据源的多少源属性
            ps.AllowPaging = true;//设置为可分页
            ps.PageSize = 10;//设置每页显示多少行数据
            ps.CurrentPageIndex = pagetCount – 1;//设置当前页
            this.Button1.Enabled = true;
            this.Button2.Enabled = true;

 

前方都以利用系统里面的艺术,自定义方法,须求先定义一个最少是 protected
的情势,例如:

            this.Repeater1.DataSource = ps;//用可分页数据源起初Repeater控件
            this.Repeater1.DataBind(); //绑定   
            if (pagetCount==1)
            {
                this.Button1.Enabled = false;
            }
            if (pagetCount == ps.PageCount)
            {
                this.Button2.Enabled = false;
            }

 

protected string foo(string str) { return str + “:)”; }

 

 

接下来利用时,要求留意转变 Eval 字段的品类为 string。譬如:

DataList控件
达成查看详细音讯按键
1.    在平日项模板中增多叁个开关 将该开关的 commandName
属性设置为”select”
2.    在DataList的ItemCommand 事件中 完结接纳行

  澳门新葡萄京官网首页 4

<ItemTemplate><%# foo(Eval(“realName”).ToString())
%></ItemTemplate>

澳门新葡萄京官网首页 5澳门新葡萄京官网首页 6代码

 

 

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName==”select”)
        {
            this.DataList1.SelectedIndex = e.Item.ItemIndex;
            this.DataList1.DataBind();
        }
}

 

 

 

3.     在当选项 模板中 显示需求出示的音信
       <SelectedItemTemplate>
        <%# DataBinder.Eval(Container.DataItem,”title”) %>
        发行日期:<%#
DataBinder.Eval(Container.DataItem,”publishDate”,”{0:d}”) %>
        <%# DataBinder.Eval(Container.DataItem,”contentdescription”)
%>
        </SelectedItemTemplate>
GirdView控件

澳门新葡萄京官网首页 7

增添字段页面:

 

HyperLinkField 超链接项
重视品质:

上边是实际的落到实处:页面包车型大巴代码

DataNavigateUrlFields         将在绑定的数额源字段名称
DataNavigateUrlFormatString  
将以get方式交给到对象页面如:BookDetail.aspx?id={0}
接连前边的?id= 是交给地址 {0} 是占位符
或者:
例如就要付出的页面是二个一直以来的页面它根据表中的ID字段来命名页面名称
DataNavigateUrlFields       属性为 BookName
DataNavigateUrlFormatString 属性为 Books/{0}.aspx

 

RowDataBound事件 完结鼠标悬停当前进变色

 1   <asp:DataList ID=”dsgetall” runat=”server” OnSelectedIndexChanged=”dsgetall_SelectedIndexChanged”
 2                       RepeatColumns=”3″ Width=”100%”>
 3                       <ItemTemplate>
 4                           <table cellpadding=”0″ cellspacing=”0″ border=”0″>
 5                               <tr>
 6                                   <td>
 7                                       <asp:ImageButton ID=”ImageButton1″ runat=”server” CommandArgument='<%# getArgument(Eval(“url”),Eval(“Name”)) %>’
 8                                           Height=”112px” ImageUrl='<%# this.LogImg2(Eval(“url”),Eval(“Name”))%>’ OnCommand=”ImageButton1_Command”
 9                                           Width=”150px” /></td>
10      
11                               </tr>
12                               <tr>
13                                   <td align=”left” rowspan=”2″>
14                                      <%# DataBinder.Eval(Container.DataItem, “DES”)%></td>
15                               </tr>
16                               <tr>
17                               </tr>
18                           </table>
19                       </ItemTemplate>
20                   </asp:DataList>

澳门新葡萄京官网首页 8澳门新葡萄京官网首页 9代码

 .CS

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
      if (e.Row.RowType == DataControlRowType.DataRow卡塔尔国//假使当前进的连串为数据行
      {
          //将当前绑定的行加多二个个性
          //当鼠标悬停 设置背景为灰白          e.Row.Attributes.Add(“onmouseover”,”currentcolor=this.style.backgroundColor;this.style.backgroundColor=’#6699ff'”);         
          //当鼠标离开 苏醒背景颜色
          e.Row.Attributes.Add(“onmouseout”, “this.style.backgroundColor=currentcolor”);
      }
  }

澳门新葡萄京官网首页 10澳门新葡萄京官网首页 11代码

 

 protected void Page_Load(object sender, EventArgs e)
    {
   bind();
}
    public void bind()
    {
        //获得当前集团的ID–从另个页面传过来的ID
        //qiyeid
        string qiyeid = Request.QueryString[“qiyeid”].ToString();
        ccwu.DAL.Img_en en = new ccwu.DAL.Img_en();
        this.dsgetall.DataSource = en.GetList(” ENID=” + qiyeid.ToString());
        this.dsgetall.DataBind();

补偿内容—-转自

    }
 //从模板里进来的,当点击图片开关的时候查看详细
    protected void ImageButton1_Command(object sender, CommandEventArgs e)
    {
        string argument = e.CommandArgument.ToString();
        string picturespath = Convert.ToString(argument.Split(‘#’)[0].ToString());
        string picturename = Convert.ToString(argument.Split(‘#’)[1].ToString());
        string str = “..” + picturespath + “/” + picturename;
        //调用艺术,查看原图
        JavaScriptLocationHref(str, this);
    }

 

/// <summary>
    /// 绑定数据,当点击图片的时候拿到那几个值
    /// </summary>  
    /// <returns></returns>
    protected string getArgument(object id, object isAuditing)
    {
        return id.ToString() + “#” + isAuditing.ToString();
    }
 
    
    /// <summary>
    ///    //在页面绑定产生五个门道 //ImageUrl要绑定的门道
    /// </summary>
    /// <param name=”picturespath”>图片存在的不二秘诀</param>
    /// <param name=”picturename”>图片名称</param>
    /// <returns>静态字段,重回叁个静态字段在页面实行展现</returns>
    public string LogImg2(object picturespath, object picturename)
    {
        string urlString = “”;
        if (picturespath != null && picturename != null)
        {
            if (picturespath.ToString().Length > 0 && picturename.ToString().Length > 0)
            {
                urlString = “~” + picturespath.ToString() + “/” + “4_” + picturename.ToString();
            }
        }
        //若无图片,则显示自身定义的图纸
        if (picturespath != null && picturename == null)
        {
            if (picturespath.ToString().Length > 0 && picturename.ToString().Length == 0)
            {
                urlString = “~/ccwuBackImage/nopic.bmp”; 
            }
        }
        return urlString;
    }
    public static void JavaScriptLocationHref(string url, Page page)
    {
        #region
        string js = @”<Script language=’JavaScript’>
                    window.location.replace(‘{0}’);
                  </Script>”;
        js = string.Format(js, url);
        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), “JavaScriptLocationHref”))
        {
            page.ClientScript.RegisterStartupScript(page.GetType(), “JavaScriptLocationHref”, js);
        }
        #endregion
    }

字符串格式化:table.AppendFormat(@”<td>{0}</td>”,string.Format(“{0:C}”,
Convert.ToInt32(sumMoney卡塔尔State of Qatar 卡塔尔(قطر‎;

 

<%#
Eval(“finishtime”,”{0:yyyy-MM-dd}”) %>
在绑定数据时平日会用到那些句程序:

 

<%#
DataBinder.Eval(Container.DataItem,”xxxx”)%>或者

<%#
DataBinder.Eval(Container,”DataItem.xxxx”)%>

微软这种艺术的作用更加高,但小编有的时候用,小编习于旧贯了上蓬蓬勃勃种。

 

<%# ((DataRowView)Container.DataItem)[“xxxx”]%>
用这种方式首先要在前台页面导入名称空间System.Data,不然会变动错误消息。

<%@ Import namespace=”System.Data” %>

     
DataBinder.伊娃l(卡塔尔国可以梆定方法,Text='<%#
PBnumber(DataBinder.Eval(Container.DataItem,”photoBookID”卡塔尔国卡塔尔%>后台代码:
protected string PBnumber(object PBid)
{

            string str = “[ ” +
Convert.ToString(PBc.GetInPbkPnum((int)PBid)) + ” ] 张”;

            return str;
}

      
DataBinder.Eval还足以剖断选拔,如以性别为例:

<asp:TemplateColumn
HeaderText=”性别”>
<ItemTemplate>
<%#
DGFormatSex(Convert.ToString(DataBinder.Eval(Container.DataItem,”xb”)))
%>
</ItemTemplate>
</asp:TemplateColumn>

   cs里定义DGFormatSex方法
protected string DGFormatSex(string xb)
{
if(xb == “1”)
return “男”;
else
return “女”;
}

     DataBinder.Eval用法楷模

//展现几个人小数
//<%# DataBinder.Eval(Container.DataItem, “UnitPrice”, “${0:F2}”)
%>

//{0:G}代表呈现True或False
//<ItemTemplate>
// <asp:Image Width=”12″ Height=”12″ Border=”0″ runat=”server”
// AlternateText='<%# DataBinder.Eval(Container.DataItem,
“Discontinued”, “{0:G}”) %>’
// ImageUrl='<%# DataBinder.Eval(Container.DataItem, “Discontinued”,
“~{0:G}.gif”) %>’ />
// </ItemTemplate>

//调换类型
((string)DataBinder.Eval(Container,
“DataItem.P_SHIP_TIME_SBM8”)).Substring(4,4)

{0:d} 日期只体现年月日
{0:yyyy-mm-dd} 按格式突显年月日
{0:c} 货币样式

 本文即便你早已驾驭ASP.NET
1.1的数码绑定(特别是Container那一个部分变量卡塔尔国的建制,这里根本解析ASP
2.0多少绑定做了这么些改革。

ASP.NET 2.0 的数目绑定函数Eval(卡塔尔简化掉了ASP
1.1神秘的Container.DataItem,例如数据绑定表明式:

<%# (Container.DataItem as DataRowView)["ProductName"].ToString() %>

  ASP.NET 1.1简化为:(去掉了体系内定,
Eval通过反射实现,本文不再演讲卡塔尔国

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

  ASP.NET
2.0又简化为,去掉了Container局地变量:

<%# Eval("ProductName") %>

  那么,Page.Eval(State of Qatar又是怎么着明白”ProductName”是老大数据的习性呢,即Container.DataItem真的衰亡了呢?

Eval()是Page的父类TemplateControl的方法

TemplateControl.Eval(卡塔尔国能够自动测算出Container,
机制正是从一个dataBindingContext:Stack货仓来获得。

  1. 建立DataItem Container 栈:

在Control.DataBind(State of Qatar中,创建,那样能够保障子控件的DataItem
Container始终在栈顶。

public class Control
{
protected virtual void DataBind(bool raiseOnDataBinding)
{
bool foundDataItem = false;
if (this.IsBindingContainer)
{
object o = DataBinder.GetDataItem(this, out foundDataItem);
if (foundDataItem)
Page.PushDataItemContext(o); <– 将DataItem压入堆栈
}
try
{
if (raiseOnDataBinding)
OnDataBinding(EventArgs.Empty);

DataBindChildren(); <– 绑定子控件
}
finally
{
if (foundDataItem)
Page.PopDataItemContext(); <– 将DataItem弹出堆栈
}
}
}

  2. 获取DataItem
Container

public class Page
{
public object GetDataItem()
{

return this._dataBindingContext.Peek(); <– 读取堆栈顶部的DataItem Container,就是正在绑定的DataItem    Container
}
}

  3. TemplateControl.Eval()

public class TemplateControl
{
protected string Eval (string expression, string format)
{
return DataBinder.Eval (Page.GetDataItem(), expression, format);
}
}

  结论:

从上边看出Page.Eval(卡塔尔(قطر‎在寻思的时候如故援用了Container.DataItem,只不过那几个DataItem通过DataItem
Container仓库自动总计出来的。笔者以为Page.Eval(卡塔尔(قطر‎看似把难点简化了,其实把标题搞得尤其隐衷。

<%# Eval(“C_FromTime”,”{0:d}”) %>

DateTime.Parse(EquInfo.FindEquInfoByID(Request[“id”]).InDate).ToShortDateString()

标准的Format格式Format Format 模式
d MM/dd/yyyy 如(2001-3-27)
D dddd, MMMM dd, yyyy 如(2001年3月27日)
f dddd, MMMM dd, yyyy HH:mm 如(2001年3月27日 0:00)
F dddd, MMMM dd, yyyy HH:mm:ss 如(2001年3月27日 0:00:00)
g MM/dd/yyyy HH:mm 如(2001-3-27 0:00)
G MM/dd/yyyy HH:mm:ss 如(2001-3-27 0:00:00)
m, M MMMM dd 如(三月 27)
r, R ddd, dd MMM yyyy HH’:’mm’:’ss ’GMT’ 如(Mon, 26 Mar 2001 16:00:00
GMT)
s yyyy-MM-dd HH:mm:ss 好像无法利用
t HH:mm 如(0:00)
T HH:mm:ss 如(0:00:00)
u yyyy-MM-dd HH:mm:ss 如(2001-03-26 16:00:00Z)
U dddd, MMMM dd, yyyy HH:mm:ss 如(2001年3月26日 16:00:00)
y, Y MMMM, yyyy 如(2001年3月)

自定义格式列表Format Pattern Description
d 如:2001-3-27
dd 如:27
ddd 如:星期一
dddd 如:星期一(全名)
M 如:三月 27
MM 如:03
MMM 如:三月
MMMM 如:三月(全称)
y 如:2001年3月
yy 如:01
yyyy 如:2001
gg 如:A.D.
hh, hh* 如:12
HH, HH* 如:00
m 如:三月 27
mm, mm* 如:00(分钟)
s 如:2001-03-27T00:00:00
ss, ss* 如:00(秒)
t 如:0:00
tt, tt* 如:上午

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注