2006年11月15日

实在是忍受不了MSN的巨慢速度,重新换个地方

把以前在MSN个人空间的贴子部分导出来,贴在现在的博客园里面。
希望这个好一些。

posted @ 2006-11-15 12:54 戴玮 阅读(45) 评论(0) 编辑

如果在网页中实现查找功能

 


有什么问题请到<a href='/bbs/forums.php?fid=21'>论坛</a>中发表<br>
<!--# 特效来源:http://www.webjx.com/js -->
<!-- 把如下代码加入<body>区域中 -->
 你可以输入'脚本'查查看<BR>有<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <script language="JavaScript">

var NS4 = (document.layers);    // Which browser?
var IE4 = (document.all);

var win = window;    // window to search.
var n   = 0;

function findInPage(str) {

  var txt, i, found;

  if (str == "")
    return false;

  // Find next occurance of the given string on the page, wrap around to the
  // start of the page if necessary.

  if (NS4) {

    // Look for match starting at the current point. If not found, rewind
    // back to the first match.

    if (!win.find(str))
      while(win.find(str, false, true))
        n++;
    else
      n++;

    // If not found in either direction, give message.

    if (n == 0)
      alert("Not found.");
  }

  if (IE4) {
    txt = win.document.body.createTextRange();

    // Find the nth match from the top of the page.

    for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
      txt.moveStart("character", 1);
      txt.moveEnd("textedit");
    }

    // If found, mark it and scroll it into view.

    if (found) {
      txt.moveStart("character", -1);
      txt.findText(str);
      txt.select();
      txt.scrollIntoView();
      n++;
    }

    // Otherwise, start over at the top of the page and find first match.

    else {
      if (n > 0) {
        n = 0;
        findInPage(str);
      }

      // Not found anywhere, give message.

      else
 {
        //alert("Not found.");
 }
    }
  }

  return false;
}

</script>
<div style="position:absolute;height:10pt;top:expression(document.body.clientHeight-this.style.pixelHeight+document.body.scrollTop-20);left:600px;font:9pt;">
<form style="background-color:#FFCC99" name="search" onSubmit="javascript:findInPage(this.string.value);return false;">
<font size=3><input name="string" type="text" size=15 onChange="n = 0;"></font>
<input type="submit" value="Find">
</form>
</div>

posted @ 2006-11-15 12:48 戴玮 阅读(125) 评论(0) 编辑

asp.net2.0 页面生命周期方法

 

asp.net2.0 页面生命周期方法
大杂烩-.NET

asp.net2.0 页面生命周期方法

方法 活动

Constructor

Always

Construct

Always

TestDeviceFilter

Always

AddParsedSubObject

Always

DeterminePostBackMode

Always

OnPreInit

Always

LoadPersonalizationData

Always

InitializeThemes

Always

OnInit

Always

ApplyControlSkin

Always

ApplyPersonalization

Always

OnInitComplete

Always

LoadPageStateFromPersistenceMedium

Always

LoadControlState

Always

LoadViewState

Always

ProcessPostData1

Always

OnPreLoad

Always

OnLoad

Always

ProcessPostData2

Always

RaiseChangedEvents

Always

RaisePostBackEvent

Always

OnLoadComplete

Always

OnPreRender

Always

OnPreRenderComplete

Always

SavePersonalizationData

Always

SaveControlState

Always

SaveViewState

Always

SavePageStateToPersistenceMedium

Always

Render

Always

OnUnload

Always

查看页面生命周期的底层细节,我们可以看到 ASP.NET 2.0 中提供的许多功能(例如主题和个性化)将在什么地方容易实现。例如,主题在 IntializeThemes 事件中处理,而个性化数据将在 LoadPersonalizationData 中加载并稍后用于 ApplyPersonalization 方法。请注意,就哪一个 UI 元素将决定 Web 应用程序的最终外观和感觉而言,方法的顺序非常重要。

 

http://manbu.net/Lib/Class9/Sub14/5/35.asp

posted @ 2006-11-15 12:46 戴玮 阅读(123) 评论(0) 编辑

C#加密与解决

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace Secrituy
{
   
   

    public class Secure
    {
        private static byte[] DESKey = new byte[]{11,23,93,102,72,41,18,12};
        private static byte[] DESIV = new byte[] { 75, 158, 46, 97, 78, 57, 17, 36 };
        public static string Encode(string Encode_String)
        {
            DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
            MemoryStream objMemoryStream = new MemoryStream();
            CryptoStream objCryptoStream = new CryptoStream(objMemoryStream, objDES.CreateEncryptor(DESKey, DESIV), CryptoStreamMode.Write);
            StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
            objStreamWriter.Write(Encode_String);
            objStreamWriter.Flush();
            objCryptoStream.FlushFinalBlock();
            objMemoryStream.Flush();
            return Convert.ToBase64String(objMemoryStream.GetBuffer(), 0, (int)objMemoryStream.Length);
        }
        public static string Decode(string Encode_String)
        {
            DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
            byte[] input = Convert.FromBase64String(Encode_String);
            MemoryStream objMemoryStream = new MemoryStream(input);
            CryptoStream objCryptoStream = new CryptoStream(objMemoryStream, objDES.CreateDecryptor(DESKey, DESIV), CryptoStreamMode.Read);
            StreamReader objStreamReader = new StreamReader(objCryptoStream);
            return objStreamReader.ReadToEnd();
        }
    }
}
 
 
<SCRIPT language=JavaScript >
window.onbeforeunload = function ()
{
    // . . . 
    event.returnValue = "You will lose any unsaved content";
    // . . .   
}
</script>

posted @ 2006-11-15 12:45 戴玮 阅读(69) 评论(0) 编辑

如何自定义一个模板列,并在后台加载

 

public class EditTemplateColumn : ITemplate
{
    public EditTemplateColumn(string colname)
    {
        m_strColName = colname;
    }
    public void InstantiateIn(Control container)
    {
        Label edt = new Label();
        edt.DataBinding += new EventHandler(this.OnDataBinding);
        container.Controls.Add(edt);
    }
    public void OnDataBinding(object sender, EventArgs e)
    {
        Label edt = (Label )sender;
        DataGridItem container = (DataGridItem)edt.NamingContainer;
        edt.Text = DataBinder.Eval(container, "DataItem." + this.m_strColName).ToString();
       // edt.Text = ((DataRowView)container.DataItem)[m_strColName].ToString();
    }

    private string m_strColName;
}
 
加载
 protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        TemplateColumn obj = new TemplateColumn();
        obj.ItemTemplate = new EditTemplateColumn("Birthday");
        obj.HeaderText = "itemTemplete";
       
        this.DataGrid1.Columns.Add(obj);
    }

posted @ 2006-11-15 12:44 戴玮 阅读(81) 评论(0) 编辑

ASP.NET常用的代码集合

4月17日

 

 
7.表格点击改变颜色
if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
 e.Item.Attributes.Add(
"onclick","this.style.backgroundColor=’#99cc00’;
    this.style.color=’buttontext’;this.style.cursor=default’;");
}
 
  写在DataGrid的_ItemDataBound里
if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add(
"onmouseover","this.style.backgroundColor=’#99cc00’;
   this.style.color=’buttontext’;this.style.cursor=default’;");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=’’;this.style.color=’’;");
}

12.Panel 横向滚动,纵向自动扩展
<asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
13.回车转换成Tab
<script language="javascript" for="document" event="onkeydown">
 
if(event.keyCode==13 && event.srcElement.type!=’button’ && event.srcElement.type!=’submit’ &&     event.srcElement.type!=’reset’ && event.srcElement.type!=’’&& event.srcElement.type!=’textarea’); 
   event.keyCode
=9;
/script>

onkeydown
="if(event.keyCode==13) event.keyCode=9"

14.DataGrid超级连接列
DataNavigateUrlField="字段名" DataNavigateUrlFormatString="http://xx/inc/delete.aspx?ID={0}"
15.DataGrid行随鼠标变色
private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
 
if (e.Item.ItemType!=ListItemType.Header)
 
{
  e.Item.Attributes.Add( 
"onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
  e.Item.Attributes.Add( 
"onmouseover","this.style.backgroundColor=\"""#EFF3F7"+"\"");
 }

}
 
 24.在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能?
<asp:TemplateColumn HeaderText="数量"> 
<ItemTemplate>
<asp:TextBox id="ShuLiang" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>’ 
onkeyup="javascript:DoCal()"
/>

<asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="must be integer" ValidationExpression="^\d+$" />
</ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="单价"> 
<ItemTemplate>
<asp:TextBox id="DanJian" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_DanJian")%>’ 
onkeyup="javascript:DoCal()"
/>

<asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^\d+(\.\d*)?$" />

</ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="金额"> 
<ItemTemplate>
<asp:TextBox id="JinE" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>’ />
</ItemTemplate>
</asp:TemplateColumn><script language="javascript">
function DoCal()
{
 var e = event.srcElement;
 var row = e.parentNode.parentNode;
 var txts = row.all.tags("INPUT");
 if (!txts.length || txts.length < 3)
  return;

 var q = txts[txts.length-3].value;
 var p = txts[txts.length-2].value;

 if (isNaN(q) || isNaN(p))
  return;

 q = parseInt(q);
 p = parseFloat(p);

 txts[txts.length-1].value = (q * p).toFixed(2);
}
</script>
 
32.变量.ToString()
字符型转换 转为字符串
12345.ToString("n"); //生成 12,345.00 
12345.ToString("C"); //生成 ¥12,345.00 
12345.ToString("e"); //生成 1.234500e+004 
12345.ToString("f4"); //生成 12345.0000 
12345.ToString("x"); //生成 3039 (16进制) 
12345.ToString("p"); //生成 1,234,500.00% 
获得字符串实际长度(包括中文字符) 

 //获得字符串oString的实际长度 
 public int StringLength(string oString) 
 

  
byte[] strArray=System.Text .Encoding.Default .GetBytes (oString); 
  
int res=strArray.Length ; 
  
return res; 
 }
 
//获得字符串oString的实际长度 
 public int StringLength(string oString) 
 

  
byte[] strArray=System.Text .Encoding.Default .GetBytes (oString); 
  
int res=strArray.Length ; 
  
return res; 
 }
 
42.将回车转换为TAB
//当在有keydown事件的控件上敲回车时,变为tab 
 public void Tab(System.Web .UI.WebControls .WebControl webcontrol) 
 

  webcontrol.Attributes .Add (
"onkeydown""if(event.keyCode==13) event.keyCode=9"); 
 }
 

posted @ 2006-11-15 12:43 戴玮 阅读(102) 评论(0) 编辑

触发器示例代码

 

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
 
 

ALTER       trigger SalesOrderD_T_Checking on dbo.SalesOrderD
for insert , update
as
declare @a int
if exists(select * from inserted
inner join SalesOrderH on inserted.ReceiptCode = SalesOrderH.ReceiptCode
where not exists(select * from CustProd
where CustProd.CustomerCode = SalesOrderH.CustomerCode 
and CustProd.CustomerType = SalesOrderH.CustomerType
and CustProd.TradingConditionCode = SalesOrderH.TradingConditionCode
and CustProd.ItemNo = inserted.ItemNo))
begin
raiserror('Save error ! , You do not insert Item which is not in Customer Product List .',16,1)
end
--raiserror('DaiWei is stupid ! ,  .',16,1)

/*
select CustomerCode,CustomerType,TradingConditionCode,ItemNo from SalesOrderD
inner join SalesOrderH on SalesOrderD.ReceiptCode = SalesOrderH.ReceiptCode
where not exists(select * from CustProd
where CustProd.CustomerCode = SalesOrderH.CustomerCode 
and CustProd.CustomerType = SalesOrderH.CustomerType
and CustProd.TradingConditionCode = SalesOrderH.TradingConditionCode
and CustProd.ItemNo = SalesOrderD.ItemNo)
select * from custprod where CustomerCode = 'TZ'
*/
 
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

posted @ 2006-11-15 12:41 戴玮 阅读(100) 评论(0) 编辑

ADO.NET2.0分页

 SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True");
            SqlCommand comm = conn.CreateCommand();
            SqlDataAdapter adape = new SqlDataAdapter(comm);
            comm.CommandText = "select * from employees;select * from orders";
            comm.CommandType = CommandType.Text;
            DataTable[] dts = new DataTable[2];
            dts[0] = new DataTable();
            dts[1] = new DataTable();
            DataSet ds = new DataSet();
            //DataTable dt = new DataTable("aaa");
            //DataTable dt1 = new DataTable("bbb");
            //ds.Tables.Add(dt);
            //ds.Tables.Add(dt1);
            //adape.Fill(ds, i, 5, "aaa");
            adape.Fill(ds, i, 5, "");
            //adape.Fill(i, 30, dts[0], dts[1]);
            MessageBox.Show(ds.Tables[1].Rows.Count.ToString());
            i = i + 5;
            this.dataGridView1.DataSource = ds.Tables[0];
            this.dataGridView1.Refresh();

posted @ 2006-11-15 12:40 戴玮 阅读(77) 评论(0) 编辑

如何查找 Office Web 组件 (OWC) 编程文档和示例

 

 

使用 Office Web 组件参考文档


下表显示了由 Office Web 组件安装的帮助文件。要打开这些帮助文件,请在 Windows 资源管理器中定位到相应的目录,然后双击所需的文件。

组件名称 Office Web Components 9.0 Office XP Web Components Office 2003 Web Components 说明
图表 MSOWCDCH.chm OWCDCH10.chm OWCDCH11.chm 图表组件设计时参考
数据透视表 MSOWCDPL.chm OWCDPL10.chm OWCDPL11.chm 数据透视表组件设计时参考
电子表格 MSOWCDSS.chm OWCDSS10.chm OWCDSS11.chm 电子表格组件设计时参考
电子表格 MSOWCFUN.chm OWCFUN10.chm OWCFUN11.chm 电子表格组件内置功能参考
数据源、图表、数据透视表和电子表格 MSOWCVBA.chm OWCVBA10.chm OWCVBA11.chm 所有组件的编程参考


注意:Office Web Components 9.0 的帮助文件默认安装在 %SystemDrive%\Program Files\Microsoft Office\Office\1033 文件夹中。Office XP Web Components 的帮助文件默认安装在 %SystemDrive%\Program Files\Common Files\Microsoft Shared\Web Components\10\1033 文件夹中。Office 2003 Web Components 的帮助文件默认安装在 %SystemDrive%:\Program Files\Common Files\Microsoft Shared\Web Components\11\1033 文件夹中。

如何序列化DataRow或者其他对象

 
[Serializable]
    public class Field : ISerializable
    {
        private string name = "";
        private DataRow dr = null;
        private string title = "";
        private int index = -1;
        public int Index
        {
            get { return this.index; }
            set { this.index = value; }
        }
        public string Title
        {
            get { return this.title; }
            set { this.title = value; }
        }
        public string FieldName
        {
            get { return this.name; }
            set { this.name = value; }
        }
        public DataRow FieldInfo
        {
            get { return this.dr; }
            set { this.dr = value; }
        }
        public Field()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("name");
            this.dr = dt.NewRow();
            dt.Rows.Add(dr);
          
        }
        protected Field(SerializationInfo info, StreamingContext context)//特殊的构造函数,反序列化时自动调用
        {
            this.name = info.GetString("fieldname");
            this.title = info.GetString("fieldtitle");
            this.index = info.GetInt32("fieldindex");
            DataTable dt = info.GetValue("fieldinfo", new DataTable().GetType()) as DataTable;
            this.dr = dt.Rows[0];
        }
        [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context)//序列化时自动调用
        {
            info.AddValue("fieldname", this.name);
            info.AddValue("fieldtitle", this.title);
            info.AddValue("fieldindex", this.index);
            DataTable dt = this.dr.Table.Clone(); //datarow不能同时加入到两个DataTable中,必须先克隆一个
            DataRow row = dt.NewRow();
            row.ItemArray = dr.ItemArray;
            dt.Rows.Add(row);
            info.AddValue("fieldinfo", dt, dt.GetType());
        }

        public override string ToString()
        {
            return this.name;
        }
    }
 
 

posted @ 2006-11-15 12:39 戴玮 阅读(299) 评论(0) 编辑

如何将枚举定义翻译成DataTable

public static string TransactionEnum(string fieldName, Type enumType)
        {
            return TransactionEnum(fieldName, enumType, null);
        }
        public static string TransactionEnum(string fieldName, Type enumType, string[] name)
        {
            DataTable dt = ParseEnumToTable(enumType);
            if (name != null && name.Length != dt.Rows.Count)
                name = null;
            string strReturn = "";
            string strK = "";
            for (int i = 0; i < dt.Rows.Count - 1; i++)
            {
                string v = name == null ? dt.Rows[i][0].ToString() : name[i];
                strReturn += "Iif(" + fieldName + "='" + dt.Rows[i][1].ToString() + "','" + v + "',";
                strK += ")";
            }
            string v1 = name == null ? dt.Rows[dt.Rows.Count -1][0].ToString() : name[dt.Rows.Count-1];
            strReturn += "'" + v1 + "'";
            strReturn += strK;
            return strReturn;

        }

posted @ 2006-11-15 12:37 戴玮 阅读(64) 评论(0) 编辑

网页中调用MSN添加好友工具

 

<object id=MsgrUIA classid=clsid:B69003B3-C55E-4b48-836C-BC5946FC3B28 codeType=application/x-oleobject width=0 height=0></object>
 
 
js
 
function addMSN(server_type)
{
 //alert(server_type);
 //return;
 
 var address;
 
 if(server_type == "DICT")
 {
  address = "dict002@msndoor.com";
 }
 else if(server_type == "GAME")
 {
  address = "game001@msndoor.com";
 }
 else if(server_type == "BBS")
 {
  address = "bbs001@msndoor.com";
 }
 
 try
 {
    if("undefined" == typeof(MsgrUIA))
     throw 0;
    if(MsgrUIA.MyStatus == 1)
    {
      MsgrUIA.SignIn(0,'','');
      throw 1;
    }
    MsgrUIA.AddContact(0, address);
  }
  catch(e)
  {
    switch(e)
    {
     case 0:
      //alert("fail0: state_code=" + MsgrUIA.MyStatus);
      alert("您没有安装MSN,如果已经安装MSN,请手动添加帐号: " + address  );
      break;
     case 1:
      //alert("fail1: state_code=" + MsgrUIA.MyStatus);
      alert("您的MSN没有登陆,请登陆");
      break;
     default:
      //alert("unknow fail: state_code=" + MsgrUIA.MyStatus);
      alert("请手动添加MSN帐号: " + address  );
      break;
    }
 }
 return;
 
 if(MsgrUIA.MyStatus == 1)
 {
  alert("您的MSN没有登陆,请登陆");
 }
 else if(MsgrUIA.MyStatus == 2 || MsgrUIA.MyStatus == 10 || MsgrUIA.MyStatus == 14 || MsgrUIA.MyStatus == 34 || MsgrUIA.MyStatus == 50 || MsgrUIA.MyStatus == 66 || MsgrUIA.MyStatus == 6)
 {  
  //2,10, 14, 34, 50,66,6
  MsgrUIA.AddContact(0, address);
 }
 else if(MsgrUIA.MyStatus == 512 || MsgrUIA.MyStatus == 768)
 {
  alert('fail2');
 }
 else
 {
  alert("您没有安装MSN,如果您已经安装MSN,请手动添加3: " + address  );
 }
}

posted @ 2006-11-15 12:34 戴玮 阅读(615) 评论(1) 编辑

如何在XP SP2下面使用DTC

1、安装MSMQ服务
2、进入组件服务,进行安全性配置
3、验证SQL SERVER DTC

posted @ 2006-11-15 12:33 戴玮 阅读(131) 评论(0) 编辑

Javascript 复制与粘贴

 

<a href="javascript:" onclick="clipboardData.setData('Text','https://bbs5.news.163.com/board/rep.jsp?b=school&i=68827&p=0')">复制</a>
<a href="javascript:alert(clipboardData.getData('Text'));">asdfasdf</a>

posted @ 2006-11-15 12:32 戴玮 阅读(1461) 评论(0) 编辑

如何在Component中取得Page对象

 

使用CompontDesigner即可。并重写其中的Initialize方法
例如
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Web.UI;
using System.Web.UI;
namespace aaa
{
     public class WebTimer2Designer:ComponentDesigner
    {
          public override void Initialize(IComponent component)
          {
                IContainer contailer = component.Site.Container;
                foreach(IComponent comp in Container.Components)
                {
                    if(comp is Page)
                           ((WebTimer2)component)._Page = (Page)comp;
                }
               base.Initailze(component);
          }
 
    }
}
 
 
摘自《深入剖析ASP.NET 组件设计》黄忠成编著

posted @ 2006-11-15 12:31 戴玮 阅读(40) 评论(0) 编辑

使用TransactionScope进行COM+事务处理

 

 using (TransactionScope ts = new TransactionScope())
        {
            NewBusiness.NewUser obj = new NewBusiness.NewUser();
            obj.DataRow["uname"] = "david11ww1";
            obj.Save();
            ts.Complete();
        }

posted @ 2006-11-15 12:30 戴玮 阅读(134) 评论(1) 编辑

巨NB的JAVASCRIPT代码

 

<HTML>
<BODY>
<SCRIPT LANGUAGE="JAVASCRIPT">
function addcell() //添加新的单元格
{
 //插入新的一行
 oTargetRow = document.all("mytable1").insertRow();
 for(var k = 0; k < document.all("mytable1").rows(0).cells.length; k++)
 {
  var oCell = oTargetRow.insertCell();
  if(k == 0)
  {
   oCell.innerHTML = "<input type='checkbox'>"
  }
  else
  {
   oCell.innerHTML = k;
  }
 }
}
function checkall()  //选中所有的单元格
{
 var eInput = document.all("mytable1").all.tags("INPUT");
 for(var i = 0; i < eInput.length; i++)
 {
  eInput[i].checked = true;
 }
}
function uncheckall()
{
 var eInput = document.all("mytable1").all.tags("INPUT");
 for(var i = 0; i < eInput.length; i++)
 {
  eInput[i].checked = false;
 }
}
function copycell() //拷贝单元格
{
 var eInput = document.all("mytable1").all.tags("INPUT");
 var oTargetRow = null;
 for(var i = 0; i < eInput.length; i++)
 {
  if(eInput[i].checked)
  {
   var oSourceRow = eInput[i].parentElement.parentElement;
   //插入新的一行
   oTargetRow = document.all("mytable2").insertRow();
   for(var k = 0;k < document.all("mytable1").rows(0).cells.length; k++)
   {
    var oCell = oTargetRow.insertCell();
    oCell.innerHTML = oSourceRow.cells(k).innerHTML;
   }
  }
 }
}
function delcell() //删除单元格
{
 var eInput = document.all("mytable1").all.tags("INPUT");
 for(var i = eInput.length-1;i >= 0;i--)
 {
  if(eInput[i].checked)
  {
   var oSourceRow = eInput[i].parentElement.parentElement;
   document.all("mytable1").deleteRow(oSourceRow.rowIndex);
  }
 }
}
function refresh() //刷新
{
 frmRefresh.submit();
}
</SCRIPT>
<INPUT TYPE="BUTTON" VALUE="刷新" ONCLICK="refresh()">
<INPUT TYPE="BUTTON" VALUE="全选" ONCLICK="checkall()">
<INPUT TYPE="BUTTON" VALUE="不选" ONCLICK="uncheckall()">
<INPUT TYPE="BUTTON" VALUE="添加" ONCLICK="addcell()">
<INPUT TYPE="BUTTON" VALUE="拷贝" ONCLICK="copycell()">
<INPUT TYPE="BUTTON" VALUE="移动" ONCLICK="copycell();delcell()">
<INPUT TYPE="BUTTON" VALUE="删除" ONCLICK="delcell()">
<TABLE ID="mytable1" BORDER="1" width="320">
 <TR>
  <TD width="20"><INPUT TYPE="CHECKBOX"></TD>
  <TD width="100">1</TD>
  <TD width="100">1</TD>
  <TD width="100">1</TD>
 </TR>
 <TR>
  <TD><INPUT TYPE="CHECKBOX"></TD>
  <TD>2</TD>
  <TD>2</TD>
  <TD>2</TD>
 </TR>
</TABLE>
<BR>
<TABLE ID="mytable2" BORDER="1" width="320">
 <TR>
  <TD width="20"><INPUT TYPE="CHECKBOX"></TD>
  <TD width="100">你好!</TD>
  <TD width="100">你好!</TD>
  <TD width="100">你好!</TD>
 </TR>
 <TR>
  <TD><INPUT TYPE="CHECKBOX"></TD>
  <TD>你坏!</TD>
  <TD>你好!</TD>
  <TD>你好!</TD>
 </TR>
</TABLE>
<FORM NAME="frmRefresh" ACTION="Table1.htm">
</FORM>
</BODY>
</HTML>

posted @ 2006-11-15 12:28 戴玮 阅读(117) 评论(1) 编辑

如何在C#中使用EVAL方法

 

   decimal a  = 1;
   decimal b = 2;
   string ev  = "a + b";
   System.Data.DataTable dt = new System.Data.DataTable();
   dt.Columns.Add("a",typeof(decimal));
   dt.Columns.Add("b",typeof(decimal));
   dt.Rows.Add(new object[]{a,b});
   dt.Columns.Add("c",typeof(decimal));
   dt.Columns["c"].Expression = ev;
   MessageBox.Show(dt.Rows[0]["c"].ToString());
 
 
谢谢山西的马泽KUI,给了我良好的想法!

posted @ 2006-11-15 12:28 戴玮 阅读(955) 评论(2) 编辑

9月25日C#->WebService中如何传递文件

9月25日

 

怎样使用WebService传输文件?
这里有两个办法
一个是使用byte[]传递,一个是使用WSE附件传递
前面一个:
[WebMethod]
public byte[] GetFileData(string requestFileName)
{
// 这里打开一个文件,返回文件的byte[]
}
[WebMethod]
public void SetFileData(byte[] data)
{
// 这里用data(参数)生成需要的文件
}

posted @ 2006-11-15 12:27 戴玮 阅读(868) 评论(0) 编辑

解决了一年多的问题,狂喜(一年之前)

 

今天用了一下午的时间,终于解决了C#通过WORD模板来自动生成WORD文档,以便于客户端打印的测试代码.
原理就是在WORD里面写宏,然后在C#里面调用这些宏.
 
晚上测试终于,心里很开心.
 
object oMissing = System.Reflection.Missing.Value;

   Microsoft.Office.Interop.Word.Application  oWord = new Microsoft.Office.Interop.Word.Application(); 
   oWord.Visible = false;
   Microsoft.Office.Interop.Word.Documents  oDocs = oWord.Documents;
   object oFile = @"c:\TestWord.doc";
  

   Microsoft.Office.Interop.Word.Document  oDoc = oDocs.Open(ref oFile, ref oMissing,
    ref oMissing, ref oMissing, ref oMissing,
    ref oMissing, ref oMissing, ref oMissing,
    ref oMissing, ref oMissing, ref oMissing,
    ref oMissing, ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);
   // Run the macros.
   RunMacro(oWord, new Object[]{"test",this.textBox1.Text});
  
   // Quit Word and clean up.
   oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
   System.Runtime.InteropServices.Marshal.ReleaseComObject (oDoc);
   oDoc = null;
   System.Runtime.InteropServices.Marshal.ReleaseComObject (oDocs);
   oDocs = null;
   oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
   System.Runtime.InteropServices.Marshal.ReleaseComObject (oWord);
   oWord = null;
   MessageBox.Show("ok");
 
private void RunMacro(object oApp, object[] oRunArgs)
  {
   oApp.GetType().InvokeMember("Run",
    System.Reflection.BindingFlags.Default |
    System.Reflection.BindingFlags.InvokeMethod,
    null, oApp, oRunArgs);
  }
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306683

posted @ 2006-11-15 12:25 戴玮 阅读(117) 评论(0) 编辑

如果通过XMLHTTP取得WEB数据

<script language="javascript">
function getData()
{
 try
 {
 var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");

 var url = "a.xml";
 xmlhttp.open("Get",url,false);
 xmlhttp.send();
 var xmldoc = xmlhttp.responseXML.selectSingleNode("/aaa");
 var root = xmldoc.documentElement;
 alert(xmldoc.text);
 }
 catch(err)
 {
  if(confirm("装载最新数数据错误,\r\n如果现在就下载请下载最新版的MSXML文件请点击确认"))
  {
   window.open("msxml.msi");
  }
 }
}
</script>
<?xml version="1.0" encoding="gb2312"?>
<aaa>123</aaa>
说明:如果没有安装MSMXL4的话,可以将上面的版本改为3:Msxml2.XMLHTTP.3.0

posted @ 2006-11-15 12:23 戴玮 阅读(73) 评论(0) 编辑