百度空间 | 百度首页 
 
文章列表
 
您正在查看 "Dotnet" 分类下的文章

2009-01-04 15:49
Entity Framework & SQLite

1.下载SQLite:http://sourceforge.net/projects/sqlite-dotnet2
2.解压后运行bin\Designer目录下的install.exe来实现在vs中设计SQLite数据库
3.新建entity model文件,这时候就可以选择SQLite的provider了,接下来的使用就和sqlserver一样了

常见问题:
1.需要自动增长列的时候先用语句创建表,
CREATE TABLE test3 (
    "Id" INTEGER PRIMARY KEY AUTOINCREMENT
);
然后再设计其他列
类别:Dotnet | 评论(0) | 浏览()
 
2008-09-22 10:07
1.配置权限:可以给服务器建一个windows用户组,然后把项目的contributors权限指定给该组 2.配置文档:地址http://服务器/sites/项目名 3.配置报表服务:
类别:Dotnet | 评论(0) | 浏览()
 
2008-06-12 15:12
类别:Dotnet | 评论(1) | 浏览()
 
2008-03-28 17:00

好久没发啥东西了,该发点了

前提:vs2008 ,asp.net mvc preview2,jquery

目的:每次进行添加修改操作时,都需要验证表单中各个控件的值,为了更加灵活,需要实现可配置验证信息

演示:http://asp.netmvc.cn 域名够酷?o(∩_∩)o...

用户名密码:testuser:123456 只是提供演示,所以开放了所有权限,希望大家别乱改系统管理的数据,否则我就得还原数据库了

方法简单介绍:使用了比较直接的方式,在数据库中存储各表单对应实体的字段配置信息,在程序运行时读取出来缓存之,在每个表单提交的时候调用一些静态方法来验证Request.Form或者Request.QueryString中传递过来的值,将结果输出,因为前台和后台验证都是必须的,所以将两种的验证过程都放在后台,前台通过ajax调用后台返回json处理

详细步骤:

1.数据库及linq实体设计

2.验证helper及相关类

这个比较简单,无非就是做一些相关的类,将数据库的信息组织起来方便用

3.后台验证

在使用表单的数据之前调用helper验证一下:

通常会放到controller基类中

protected void ValidatorForm(string pEntityName)
        {
            ValidatorResult vr = ValidatorHelper.ValidatorForm(Request.Form, pEntityName);
            if (!vr.Successful)
            {
                ShowMessage(ValidatorHelper.GetHTMLResult(vr));
            }
        }

只需要传递实体名即可

4.前台验证

1.准备一个后台的action,比如就放在/Home/ValidatorFormToJSON这里

public void ValidatorFormToJSON(string EntityName)
        {
            Response.Write(ValidatorHelper.GetJSONResult(Request.QueryString, EntityName));
            Response.AppendHeader("Expires", "Mon, 26 Jul 2000 05:00:00 GMT");//防止ie缓存
        }

2.js通用代码放在js文件中

function validateForm(btn,formName,entityName){
    $(btn).attr("disabled","disabled");
    $(".ValidateMessage").remove();
    $(".ValidateControl").removeClass("ValidateControl");
    $.getJSON("/Home/ValidatorFormToJSON?EntityName="+entityName+"&"+$("#"+formName).serialize(),
    function(data){
        if(data.Successful==false){
            for(i=0;i<data.Items.length;i++){
                var item = data.Items[i];
                $("*[name='"+item.FieldName+"']").after("<b class='ValidateMessage'><a name='"+item.FieldName+"'/>"+item.Message+"</b>");
                $("*[name='"+item.FieldName+"']").addClass("ValidateControl");
                $("*[name='"+item.FieldName+"']").focus();
            }
           
            $(btn).attr("disabled","");
        }
        else{
            $("#"+formName).submit();
        }
    });
    return false;
}

用jquery可以方便的获得form元素并提交给上边的action,获得json来操作页面元素,报告错误

jquery的 $("#"+formName).serialize() 对它的帮助很大

3.需要验证的form里的submit 按钮的处理加入以下属性

onclick="return validateForm(this,'mEditForm','EntityName')"

其中'mEditForm'是要验证表单的id

5.完成看效果

配置界面:

实际使用界面:

6.总结

使用该方式验证表单时所需进行的操作,顺序部分先后

1.配置验证信息

2.后台要使用request.form之前 调用ValidatorForm("EntityName");

3.前台给form的submit按钮加上如下属性onclick="return validateForm(this,'mEditForm','EntityName')"

类别:Dotnet | 评论(0) | 浏览()
 
2008-01-11 17:04
1. 从工具栏拖一个BackgroundWorker控件,设置其属性WorkerReportsProgress为true

2. 要让worker开始工作,执行如下代码:
    mBackgroundWorker.RunWorkerAsync(arg);
    这里有重写,如果不需要传递参数直接mBackgroundWorker.RunWorkerAsync();

3. 编辑DoWork事件代码:
    e.Argument为mBackgroundWorker.RunWorkerAsync(arg);对应的参数
    之所以使用进度条,肯定是有循环的,在循环中报告进度:
    worker.ReportProgress(i * 100 / totalNum, obj );
    其中第一个参数是当前进度的百分之多少,obj为你要传递的UserState,如果没有可以不要

4. 编辑ProgressChanged事件代码:
    e.ProgressPercentage为进度的百分数,e.UserState为刚才传递过来的object
    在这个事件中可以调用ui的进度条和其他控件:
    mToolStripProgressBar.Value = e.ProgressPercentage;

5. 编辑RunWorkerCompleted事件代码:
    工作完成了告诉ui


示例代码:一个简单的刷网页流量的小工具

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;

namespace shua
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync(textBox1.Text);
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = (BackgroundWorker)sender;
            string url = e.Argument.ToString();
            int num = int.Parse(textBox2.Text);
            for (int i = 0; i < num; i++)
            {
                if (!worker.CancellationPending)
                {
                    WebRequest request = WebRequest.Create(url);
                    WebResponse response = request.GetResponse();
                    response.Close();
                   
                    Thread.Sleep(100);
                    worker.ReportProgress(i * 100 / num, i);
                }
            }
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
            label3.Text = e.UserState.ToString();
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MessageBox.Show("ok");
        }
    }
}
类别:Dotnet | 评论(2) | 浏览()
 
2008-01-08 15:32
将以下代码拷贝到aspx页面,即可看到效果

<%
    //要比较的数据库中的时间
    DateTime dt = DateTime.Parse("2008-01-08 15:26:35");
    long ms = (long)dt.Subtract(DateTime.Now).TotalSeconds;
     %>
    <script type="text/javascript">
var allSeconds=<%=ms %>;

function count(){
  
   if(allSeconds<=0){
      
           document.getElementById("pai").disabled="disabled";
   }
    setTimeout("count()",1000);
    document.getElementById("lefttime").innerHTML=getLeftTimeString(allSeconds);
    allSeconds--;
}

function getLeftTimeString(ms){
    if(ms<=0) return "竞拍已经结束";
    var rr="剩余";
    if(ms>=86400){
        rr=rr+String(Math.floor(ms/86400))+"天";
        ms=ms%86400;
    }
    if(ms>=3600){
        rr=rr+String(Math.floor(ms/3600))+"小时";
        ms=ms%3600;
    }

    if(ms>=60){
        rr=rr+String(Math.floor(ms/60))+"分钟";
        ms=ms%60;
    }
    rr=rr+String(ms)+"秒";
    return rr;
}
    </script>
    <div>
        <input id="pai" type="button" value="竞拍"/>
        <span id="lefttime"></span>
        <script type="text/javascript">
        count();
        </script>
    </div>

说明:在c#代码中替换对应dt的值,在aspx页面将<%=ms %>输出到js代码内部作为变量,剩下的就交给js了。只是简单模拟,具体逻辑自己再改吧。
类别:Dotnet | 评论(1) | 浏览()
 
2007-09-29 11:04
首先引用prototype的类库,下载地址:http://www.prototypejs.org/

注册用户的前台代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="reg.aspx.cs" Inherits="reg" %>

<!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>Untitled Page</title>

    <script type="text/javascript" src="prototype.js"></script>

<script type="text/javascript">
function checkUser(){
    var myAjax = new Ajax.Request(
          'CheckUser.aspx',
          {method: 'post', parameters: 'UserName='+document.getElementById("mUserNameTextBox").value, onComplete:
            function(r){
                if(r.responseText=="0"){
                        //不存在
                    }else{
                        //存在的话报告,并且进行相关的处理
                        document.getElementById("message").innerText="已经存在";
                    }
                }
            }
          );
}
</script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            用户名:<asp:TextBox ID="mUserNameTextBox" runat="server" onblur="checkUser()"></asp:TextBox><span id="message"></span><br />
            其他滴:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
    </form>
</body>
</html>

其中用到了CheckUser.aspx页面,就是传递给它用户名,然后返回0或者1
简单的例子代码如下:

public partial class CheckUser : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //检验用户的逻辑
        Response.Write("0");
        Response.End();
        Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");//防止缓存
    }
}
类别:Dotnet | 评论(1) | 浏览()
 
2007-09-28 09:04
在使用Asp.net的过程中,我们经常需要对时间日期进行转换,达到不同的显示效果。默认格式为:2006-6-6 14:33:34 ,如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢?

  这里将要用到:DateTime.ToString的方法(String, IFormatProvider)

  示例:

以下是引用片段:
using System;
using System.Globalization;
String format="D";
DateTime date=DataTime.Now;
Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));

  结果输出

  Thursday, June 16, 2006

  在这里列出了参数format格式详细用法

  =======================

  格式字符 关联属性/说明

  d ShortDatePattern

  D LongDatePattern

  f 完整日期和时间(长日期和短时间)

  F FullDateTimePattern(长日期和长时间)

  g 常规(短日期和短时间)

  G 常规(短日期和长时间)

  m、M MonthDayPattern

  r、R RFC1123Pattern

  s 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)

  t ShortTimePattern

  T LongTimePattern

  u UniversalSortableDateTimePattern 用于显示通用时间的格式

  U 使用通用时间的完整日期和时间(长日期和长时间)

  y、Y YearMonthPattern

  下表列出了可被合并以构造自定义模式的模式

  ========================================

  这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。

  格式模式 说明 :

  d 月中的某一天。一位数的日期没有前导零。

  dd 月中的某一天。一位数的日期有一个前导零。

  ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。

  dddd 周中某天的完整名称,在 DayNames 中定义。

  M 月份数字。一位数的月份没有前导零。

  MM 月份数字。一位数的月份有一个前导零。

  MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。

  MMMM 月份的完整名称,在 MonthNames 中定义。

  y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。

  yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。

  yyyy 包括纪元的四位数的年份。

  gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。

  h 12 小时制的小时。一位数的小时数没有前导零。

  hh 12 小时制的小时。一位数的小时数有前导零。

  H 24 小时制的小时。一位数的小时数没有前导零。

  HH 24 小时制的小时。一位数的小时数有前导零。

  m 分钟。一位数的分钟数没有前导零。

  mm 分钟。一位数的分钟数有一个前导零。

  s 秒。一位数的秒数没有前导零。

  ss 秒。一位数的秒数有一个前导零。

  f 秒的小数精度为一位。其余数字被截断。

  ff 秒的小数精度为两位。其余数字被截断。

  fff 秒的小数精度为三位。其余数字被截断。

  ffff 秒的小数精度为四位。其余数字被截断。

fffff 秒的小数精度为五位。其余数字被截断。

  ffffff 秒的小数精度为六位。其余数字被截断。

  fffffff 秒的小数精度为七位。其余数字被截断。

  t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。

  tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。

  z 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。

  zz 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。

  zzz 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。

  : 在 TimeSeparator 中定义的默认时间分隔符。

  / 在 DateSeparator 中定义的默认日期分隔符。

  % c 其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。

  \ c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\\”。

  只有上面第二个表中列出的格式模式才能用于创建自定义模式;在第一个表中列出的标准格式字符不能用于创建自定义模式。自定义模式的长度至少为两个字符;例如,

  DateTime.ToString( "d") 返回 DateTime 值;“d”是标准短日期模式。

  DateTime.ToString( "%d") 返回月中的某天;“%d”是自定义模式。

  DateTime.ToString( "d ") 返回后面跟有一个空白字符的月中的某天;“d”是自定义模式。

  比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式

  如要得到2005年06月 这样格式的时间

  可以这样写:

以下是引用片段:
date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)

  如此类推.

  下面列出一些Asp.net中具体的日期格式化用法:

  ============================================

  1.绑定时格式化日期方法:

  

以下是引用片段:
<ASP:BOUNDCOLUMN DATAFIELD= "JoinTime " DATAFORMATSTRING= "{0:yyyy-MM-dd} " >
<ITEMSTYLE WIDTH= "18% " > </ITEMSTYLE >
</ASP:BOUNDCOLUMN >

  2.数据控件如DataGrid/DataList等的件格式化日期方法:

以下是引用片段:
e.Item.Cell[0].Text = Convert.ToDateTime(e.Item.Cell[0].Text).ToShortDateString();

  3.用String类转换日期显示格式:

以下是引用片段:
String.Format( "yyyy-MM-dd ",yourDateTime);

  4.用Convert方法转换日期显示格式:

以下是引用片段:
Convert.ToDateTime("2005-8-23").ToString
("yyMMdd",System.Globalization.DateTimeFormatInfo.InvariantInfo); //支持繁体数据库

  5.直接用ToString方法转换日期显示格式:

以下是引用片段:
DateTime.Now.ToString("yyyyMMddhhmmss");
DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")

  6.只显示年月

以下是引用片段:
DataBinder.Eval(Container.DataItem,"starttime","{0:yyyy-M}")

  7.显示时间所有部分,包括:年月日时分秒

< p>

以下是引用片段:
<asp:BoundColumn DataField="收款时间" HeaderText="收款时间"
DataFormatString="{0:yyyy-MM-dd HH24:mm:ss}">
</asp:BoundColumn>

  [ASP.NET] 如何在GridView中使用DataFromatString

  在我们从业务逻辑层获得数据实体时候,接下来的事情就是要绑定到控件中。数据实体中的一些字段可以直接绑定到界面中,但是有一些字段需要重新格 式化格式。比如货币单位字段,需要显示货币符号和每隔三位显示分隔符;再比如日期字段,数据库中存放的是日期和时间,但是在界面上需要按照XXXX年XX 月XX日的格式显示。这时候我们就用到了DataFormatString属性。

以下是引用片段:
<asp:GridView ID="grvResult" runat="server" AutoGenerateColumns="False" Width="100%">
     <Columns>
         <asp:BoundField HeaderText="预定日期" DataField="OperationDate" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False">
         </asp:BoundField>      
         <asp:BoundField HeaderText="订单总计" DataField="TotalRate" DataFormatString="{0:C}" HtmlEncode="False">
         </asp:BoundField>
     </Columns>
</asp:GridView>

  例如上面的代码展示了日期和货币两种绑定方式。DataFormatString中的{0}是固定的格式,这和 String.Fromat(“{0}”, someString)中的{0}是一个用法,表示绑定上下文的参数索引编号。然后,在后面加入格式化字符串,具体的使用方法可以参考MSDN。

  这里需要注意以下几点

  1. 在GridView中的asp:BoundField使用DataFormatString必须设置属性HtmlEncode="False",否则不起作用。

  2. 如果需要使用日期类型的格式化字符串,必须数据实体中对应的字段也应该日起类型的。

  3. 格式化字符串C代表货币单位,需要绑定的数据类型应该是数字类型的。如果是字符串类型的不起作用,需要手动添加格式化字符串为DataFormatString="¥{0:C}"。

类别:Dotnet | 评论(0) | 浏览()
 
2007-09-20 16:54
以后可以这样写了

Response.Write(Request["id"]??"1");

a??b

表示的意思就是a如果为null则返回b的值
类别:Dotnet | 评论(0) | 浏览()
 
2007-09-20 16:21
添加引用 using System.Transactions;

using (TransactionScope scope = new TransactionScope())
        {
            try
            {
                OrderSellerList osl1 = new OrderSellerList();
                osl1.OrderId = 9;
                osl1.SellerId = 2;
                osl1.UserId = 1;

                osl1.Save();
                OrderSellerList osl2 = new OrderSellerList();
                osl2.OrderId = 200;
                osl2.SellerId = 2;
                osl2.UserId = 1;

                osl2.Save();
                scope.Complete();
            }
            catch{}
        }
类别:Dotnet | 评论(0) | 浏览()
 
2007-09-13 14:42
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Xml;
using System.IO;

public partial class test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            binddata();
    }

    private void binddata()
    {
        string filename = System.Web.HttpContext.Current.Server.MapPath("~/cycle_image.xml");
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        List<bcasteritem> ll = new List<bcasteritem>();
        foreach (XmlNode node in doc.SelectSingleNode("bcaster").ChildNodes)
        {
            ll.Add(new bcasteritem(node.Attributes[0].Value, node.Attributes[1].Value));
        }

        Repeater1.DataSource = ll;
        Repeater1.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string filename = System.Web.HttpContext.Current.Server.MapPath("~/cycle_image.xml");
        XmlDocument xmldoc = new XmlDocument();
        //加入XML的声明段落,<?xml   version="1.0"   encoding="gb2312"?>
        XmlDeclaration xmldecl;
        xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
        xmldoc.AppendChild(xmldecl);

        //加入一个根元素
        XmlElement xmlelem = xmldoc.CreateElement("", "bcaster", "");
        xmldoc.AppendChild(xmlelem);
        //加入另外一个元素
        foreach (RepeaterItem item in Repeater1.Items)
        {
            TextBox item_url = item.FindControl("item_url") as TextBox;
            TextBox link = item.FindControl("link") as TextBox;

            XmlNode root = xmldoc.SelectSingleNode("bcaster");
            XmlElement xe1 = xmldoc.CreateElement("item");
            xe1.SetAttribute("item_url", item_url.Text);
            xe1.SetAttribute("link", link.Text);

            root.AppendChild(xe1);//添加到<Employees>节点中   
        }
        //保存创建好的XML文档
        if (File.Exists(filename))
            File.Delete(filename);
        xmldoc.Save(filename);
        binddata();

    }
}
public class bcasteritem
{
    public bcasteritem(string item_url, string link)
    {
        this._item_url = item_url;
        this._link = link;
    }
    private string _item_url;

    public string item_url
    {
        get { return _item_url; }
        set { _item_url = value; }
    }

    private string _link;

    public string link
    {
        get { return _link; }
        set { _link = value; }
    }

}

xml文件:

<?xml version="1.0" encoding="gb2312"?>
<bcaster>
<item item_url="images/image.jpg" link="123.aspx" />
<item item_url="images/hot/1.jpg" link="123" />
<item item_url="images/hot/2.jpg" link="123" />
<item item_url="images/hot/3.jpgadf" link="123" />
</bcaster>
类别:Dotnet | 评论(1) | 浏览()
 
2007-09-11 13:27
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        //声明代理类型
        delegate void delegateTest(int p);
        //为代理类型创建新的实例
        private delegateTest test=null;
        //为了不影响界面响应,需要新建一个线程
        Thread th = null;
        public Form1()
        {
            InitializeComponent();
            //为线程初始化
            th = new Thread(new ThreadStart(run));
            //初始化代理实例
            test = new delegateTest(testD);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //方法通过调用线程开始
            th.Start();
        }
        /// <summary>
        /// 实际进行循环操作的函数
        /// </summary>
        void run()
        {
            for (int i = 0; i <= 100; i++)
            {
                ///每次需要长时间处理的过程
                Thread.Sleep(100);
                //调用代理的方法
                this.Invoke(test, i);
            }
        }
        /// <summary>
        /// 处理界面元素显示进度
        /// </summary>
        /// <param name="p"></param>
        void testD(int p)
        {
            //处理界面元素显示进度
            progressBar1.Value = p;
            label1.Text = p+"%";
        }

        private void stop_Click(object sender, EventArgs e)
        {
            th.Abort();
            this.Invoke(test, 0);
        }
    }
}
类别:Dotnet | 评论(6) | 浏览()
 
2007-08-29 20:50
aspx页面:

<asp:Repeater runat="server" ID="mCatalogListRP" OnItemDataBound="mCatalogListRP_ItemDataBound">
                <ItemTemplate>
                    <div class="areaitem">
                        <div class="area1">
                            <a href="CatalogList.aspx?CatalogId=<%# DataBinder.Eval(Container.DataItem, "Id") %>">
                                <%# DataBinder.Eval(Container.DataItem, "CatalogName") %>
                            </a>
                        </div>
                        <div class="area2">
                            <asp:Repeater runat="server" ID="rp">
                                <ItemTemplate>
                                    <a href="CatalogList.aspx?CatalogId=<%# DataBinder.Eval(Container.DataItem, "Id") %>">
                                        <%# DataBinder.Eval(Container.DataItem, "CatalogName") %>
                                    </a>
                                </ItemTemplate>
                            </asp:Repeater>
                        </div>
                    </div>
                </ItemTemplate>
            </asp:Repeater>
cs页面:
CatalogListTable 为缓存的所有列表信息

private void BindCatalogList()
    {
        DataView dv = new DataView(CatalogListTable, "len(CatalogId)=2 and ishot=1", "goodsCount desc", DataViewRowState.OriginalRows);
        mCatalogListRP.DataSource = dv;
        mCatalogListRP.DataBind();
    }

    protected void mCatalogListRP_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView dr = e.Item.DataItem as DataRowView;
            Repeater rp = e.Item.FindControl("rp") as Repeater;
            rp.DataSource = new DataView(CatalogListTable, "len(CatalogId)=4 and ishot=1 and substring(catalogId,1,2)="+dr["CatalogId"], "goodsCount desc", DataViewRowState.OriginalRows);
            rp.DataBind();
        }
    }
类别:Dotnet | 评论(0) | 浏览()
 
2007-08-29 11:26
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for MyCache
/// </summary>
public class MyCache
{
    public MyCache()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    #region 类别列表

    public static DataTable CatalogList
    {
        get
        {
            if (HttpContext.Current.Cache[MycacheEnum.CatalogList.ToString()] == null)
            {
                HttpContext.Current.Cache[MycacheEnum.CatalogList.ToString()] = GetCatalogList();
            }
            return HttpContext.Current.Cache[MycacheEnum.CatalogList.ToString()] as DataTable;

        }
    }
    public static DataTable GetCatalogList()
    {
        return new DataTable();
    }

    #endregion

    public static void ClearCache(MycacheEnum key)
    {
        HttpContext.Current.Cache.Remove(key.ToString());
    }
}
public enum MycacheEnum
{
    CatalogList
}
类别:Dotnet | 评论(0) | 浏览()
 
2007-08-28 17:34
用户控件中定义好代理和事件:

    public delegate void ItemSavedDelegate(object sender, EventArgs e);

    public event ItemSavedDelegate ItemSaved;

在用户控件中可能激发事件的方法里调用:

    if (ItemSaved != null)
                ItemSaved(sender, e);

在加入用户控件的aspx页面中对应属性:

OnItemSaved="licenseSaved"

cs页面中:

   protected void licenseSaved(object sender, EventArgs e)
    {

    }
类别:Dotnet | 评论(0) | 浏览()
 
     
 
 
文章分类
 
 
 
 
Dotnet(41)
 
 
 
 
Flex(6)
 
 
 
     
 
文章存档
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
     
 
最新文章评论
   

[表情]
 

I have the Mac OSX version of this solution on my blog if anyone’s intereste...
 

明白了,要加 worker.WorkerReportsProgress = true;
 

我这边测试会出现: 此BackgroundWorker 声明它不报告进度。请修改 WorkerReportsP...
 

回复bbpnb:算不上,鱼太小了,如果半斤一条,那就爽了!
 
     


©2009 Baidu