╃小〥斌╄
二十三年春秋梦,一朝秋雨人初醒。 几曾磨剑图破壁,而今励志待明朝。 莫道红颜无我辈,古来坦途有几人? 英雄何惧前途路,丈夫岂会不腾达!
posts - 291,comments - 629,trackbacks - 8
datagrid中的HyperLinkColumn如何传递两个变量值给下一页?
two ways,
1. use <asp:HyperLink> inside a Template similar to what is suggested by jieyh(无影无形), do something like
<asp:HyperLink NavigateUrl='<%# "./detail.aspx?material_id=" +  DataBinder.Eval(Container.DataItem, "material_id").ToString() + "&material_name=" + DataBinder.Eval(Container.DataItem, "material_name").ToString()>%' .... />
or
2. add an expression column in your DataTable:
DataColumn dc = new DataColumn("Url", typeof(String));
dc.Expression="'./detail.aspx?material_id='+ material_id +'&material_name='+material_name");
YourDataTable.Columns.Add(dc);
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="Url" DataNavigateUrlFormatString="{0}" DataTextField="material_name" HeaderText="物资名称"></asp:HyperLinkColumn>
 
<asp:TemplateColumn HeaderText="公司">
<ItemTemplate>
<CENTER><A href="url?id1=<%#DataBinder.Eval(Container.DataItem,"id1")%>
&id2=<%#DataBinder.Eval(Container.DataItem,"id2")%>"><%#DataBinder.Eval(Container.DataItem,"id3")%></A></CENTER>
</ItemTemplate>
</asp:TemplateColumn>
 
 

如何设置DropDownList的当前选项?
DropDownList1.SelectedIndex=-1;
DropDownList1.Items.FindByValue("选定项目的值").Selected=true;
怎样实现在DataGrid中删除一行时弹出选择对话框,选择yes删除该行,或者弹出一个小窗口,通过小窗口上面的按钮来完成最后删除或取消超作
private void myDataGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   ListItemType lit = e.Item.ItemType;
   if (lit == ListItemType.Item || lit == ListItemType.AlternatingItem || lit ==  ListItemType.EditItem)
   {
    TableCell myTableCell = e.Item.Cells[11];
    LinkButton myDeleteButton = (LinkButton) myTableCell.Controls[0];
    myDeleteButton.Attributes.Add("onclick","return confirm('你确定要删除吗?');");
   }
  }
为你的datagird加入ItemCreated事件,并执行上述代码
 
you try
解决方法:
1)在该DataGrid中添加一个模板列,例如:
<asp:TemplateColumn HeaderText="操作">
<ItemTemplate>
<asp:LinkButton Runat="server" ID="LinkButton1" OnClick="LinkButton_Click">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
2)在该DataGrid中添加事件 OnItemCreated="OnItemCreated";该事件的代码如下:
public void OnItemCreated(Object sender, DataGridItemEventArgs e)
{
ListItemType lit = e.Item.ItemType;
if (lit == ListItemType.Item || lit == ListItemType.AlternatingItem)
CustomizeItem(e);
}
private void CustomizeItem(DataGridItemEventArgs e)
{
WebControl wc;
wc = ((WebControl) e.Item.Cells[Columns.Count-1]);
String js = "return confirm('你确实需要删除该行值吗?');";
wc.Attributes["onclick"] = js;
wc.ToolTip = "Delete this row";
}
参考:http://expert.csdn.net/Expert/topic/1567/1567431.xml?temp=.3340876
 
 
 
application中设置了一个字符串变量,在.asp.cs文件中应用
System.Web.HttpContext.Current.Application["VarName"]
 
absoluteExpiration为DateTime.MaxValue即表示没有绝对的过期时间。
试想, DateTime.MaxValue = 多少?
Cache.Insert("DSN", connectionString, null, DateTime.MaxValue, TimeSpan.FromSeconds(10));
没有所谓永不过期的说法,当服务器的内存紧张时,IIS会按Cache的优先级的高低从低到高从内存中删除Cache的数据,要想不让你的数据被从内存中删除,你可以使用Application变量。
 
如何共享asp和aspx中的变量
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ConvertToASPNET.asp
 
将一个string的编码转换成utf8编码?
byte[] buffer = UTF8Encoding.GetBytes(string)
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
newstr = encoding.GetString(buffer);
 
如果需要刷新父窗口,只需在子窗口的确定按钮响应函数中添加如下代码:
   string strClose = @"<script language=JavaScript> opener.location.href=opener.location.href; opener=null; window.close(); </script>";
   this.RegisterClientScriptBlock("clientScript", strClose);
Page.RegisterClientScriptBlock("close", "<script>opener.location.reload(1);window.close();</script>")
http://expert.csdn.net/Expert/topic/1442/1442542.xml?temp=.637356
 
 
遍历HashTable中的值?
foreach(DictionaryEntry de in table)
{
  string str=de.Value.ToString();
}
 
路径获得

System.Web.HttpContext.Current.Server这个可以
HttpContext.Current.Server.MapPath();

'Request.ApplicationPath
    'Request.FilePath
    'Request.Path
    '这些都是虚拟中径。要得到绝对路径,可以:
    'Request.MapPath(Request.ApplicationPath)
    'HttpRuntime.AppDomainAppPath
    '如果要aspx所在的物理目录用Request.PhysicalPath
    'aspx工程的根目录的物理目录用Request.PhysicalApplicationPath
    'Server.Mappth("./");
    'Request.CurrentExecutionFilePath

viewstate无法在各页面间传递变量值但所耗用的资源最少,在单个页面应用中是绝好的选择。
session可以在页面间传递值但耗用的资源较多
cookie依赖客户端的设置。
静态变量保存信息比较方便,但要考虑在多用户访问的情况下变量的读写问题。
如何选择,就看你的需要啦
 
%整形
&长整形
@货币型
!单精度浮点型
#双精度浮点型
$字符串

生成文本转换
unload to aa.txt select *
 
 
 
 

自动换行
<table border="1" width="100" height="200">
  <td style="word-wrap: break-word;">
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
</td>
 </tr>
</table>

我在一个xml文件里存了一篇文章,文章仅在段末有<br>换行符,我用xsl转化以后,这篇文章不知道自动换行,这该如何解决呢?
<xsl:template match="br">
  <br />
  </xsl:template>
 
  如果这样:
<content>&lt;br&gt;</content>
<td><xsl:value-of  select="content"  disable-output-escaping="yes"/></td>
 

判断汉字
<script>
function g(v){
try{return v.match(/[\u4e00-\u9fa5]/g).length}catch(e){return 0}
}
</script>
怎样才能限制注册用户名为英文\数字\下划线\还有标准汉字组成?
use RegularExpressionValidator and
^[0-9_a-zA-Z\u4e00-\u9fa5]+$
在一个字符串里如果有汉字,和英文字母混合在一起的情况下,如果正确得到他的长度??

ASCIIEncoding a=new ASCIIEncoding();
byte [] mybyte=a.getbyte(str);
for(int i=0;i<mybyte.Length;i++)
{
if(mybyte ==63)
{
汉字
}
}
 
什么DataFormatString能得到形式为2002-09这样的日期?
DateTime.ToString("yyyy-MM")
DataFormatString="{0:yyyy-MM}"
 

用c#处理xml文档.
本文章讲叙了怎样在c#里处理xml文档,都是些比较基本的。
首先,我们先自建一个xml文档,如下:
<?xml version="1.0" encoding="UTF-8"?>
<peoplelist>
  <person>
    <name>Tom Stafford</name>
    <title>CFO</title>
  </person>
  <person>
    <name>Jane Goodwill</name>
    <title>CEO</title>
  </person>
  <person>
    <name>Tim Daly</name>
    <title>CTO</title>
    <title2>CTO0</title2>
  </person>
  <person>
    <name>John Graver</name>
    <title>CSO</title>
  </person>
</peoplelist>
将其保存为:people.xml,:)
(1)查找XML文档里的指定节点
例如:要查找姓名为'Tim Daly'的用户的<title2>,则具体程序如下.
----
<%@page language="C#"%>
<%@import namespace="System.Xml"%>
<%@import namespace="System.Xml.Xsl"%>
<%@import namespace="System.Xml.XPath"%>
<script language="c#" runat="server">
void page_load(Object obj,EventArgs e)
{
string xmlfile="people.xml",xpath;
xpath=Server.MapPath(xmlfile);
XmlDocument myDoc = new XmlDocument(); //定义一个XmlDocument对象。
myDoc.Load(xpath);
message.Text=myDoc.SelectSingleNode ("//person[name='Tim Daly']").ChildNodes.Item(2).InnerText;}
</script>
<asp:label id="message" forecolor="red" runat="server"/>
解释:
其中//代表里面任意层的子节点。这样可以很快就找到所要的东西。
SelectSingleNode是找到一个单一的节点,SelectNodes可以找到许多节点

(2)用XML文档填充列表框,这里只用到<name>节点.
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Xml" %>
<html>
<head>
<script language="C#" runat="server">
private void Page_Load(Object sender, EventArgs e)
{
   if (!IsPostBack)
  {
    ArrayList values = new ArrayList();//将其当作数据源
    XmlDocument doc = new XmlDocument();//表示XML文档
    doc.Load(Server.MapPath("people.xml"));
    //返回一个XmlNodeList集合,包含与指定名称匹配的所有子代元素列表
    XmlNodeList elemList = doc.GetElementsByTagName("name");//System.Xml 命名空间
    for (int i=0; i < elemList.Count; i++)
    {  
     values.Add (elemList .InnerXml);
    } 
     ListBox1.DataSource = values;
     ListBox1.DataBind();
  }
}
//得到列表项,被选中项的文本
private void SubmitBtn_Click(Object sender, EventArgs e)
{
  if(ListBox1.SelectedIndex>-1)
       Label1.Text = "Selected Option: " + ListBox1.SelectedItem.Text + "<p>";
}
</script>
</head>
<body>
   <form runat=server>
     <h3>Data Binding ListBox</h3>
     <asp:Label id="Label1" font-name="Verdana" font-size="10pt" runat="server"/>
     <asp:ListBox id="ListBox1" SelectionMode="Single" Rows="1" runat="server"/>
     <asp:button id="Button1" Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>
   </form>
</body>
</html>
==============================================
(3)把XML文档通过DataSet读入到Repeater中.
你也可把它读入到DataSet.原理是一样的.
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Page Language="C#"  %>
<html>
<head>
<title>读入到Repeater</title>
<script language="C#" runat=server>
public void Page_Load(Object obj,EventArgs e)
{
  string xpath="db/people.xml" ;
  try
  {
    DataSet ds= new DataSet();
    FileStream fs= new FileStream(Server.MapPath(xpath),FileMode.Open,FileAccess.Read,FileShare.ReadWrite) ;
    ds.ReadXml(new StreamReader(fs));
    fs.Close();
    Trace.Warn("表记录数",Convert.ToString(ds.Tables[0].Rows.Count));
  
    MyDataList.DataSource=ds.Tables[0].DefaultView;
    MyDataList.DataBind();
  }
  catch (Exception ed)
  {
    Response.Write("<font color=#FF0000>"+ed.ToString()+"</font>") ;
  }
}
</script>
</head>
<body >
<ASP:Repeater id="MyDataList" runat="server">
<headertemplate>
    <h5> Viewer Details </h5>
</headertemplate>
<itemtemplate>
<br/>
<table class="mainheads" width="60%" style="font: 8pt verdana" >
<tr style="background-color:#FFFFCC">
<td>name:</td>
<td><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
<tr style="background-color:#FFFFCC">
<td>title:</td>
<td><%# DataBinder.Eval(Container.DataItem, "title")%></td>
</tr>
<tr style="background-color:#FFFFCC">
<td>title2:</td>
<td><%# DataBinder.Eval(Container.DataItem, "title2") %></td>
</tr>
</table><br/>
</itemtemplate>
</ASP:Repeater>
</body>
</html>
 
---------
(4)把Repeater中的数据保存到Xml中,同理,你也可用于DataSet.
,例子中增加了新的一行,并把编辑后的结果保存到XML
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Page Language="C#"  Trace="true"%>
<html>
<head>
<title>Saurabh's XML Counter Script</title>
<script language="C#" runat=server>
 public void Page_Load(Object obj,EventArgs e)
 {
   string dataFile="db/people.xml" ;
   if(!Page.IsPostBack)
  {
   try {
     DataSet ds= new DataSet();
     FileStream fint;
     fint= new FileStream(Server.MapPath(dataFile), FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ;
     ds.ReadXml(fint);
     fint.Close();
  
     if(Session["counter"]==null)
     {
       DataRow DR=ds.Tables[0].NewRow();
      
       DR["name"]="myname";
       DR["title"]="test";
       DR["title2"]="test2";
       ds.Tables[0].Rows.Add(DR);
       FileStream fOut ;
       fOut = new FileStream(Server.MapPath(dataFile), FileMode.Open, FileAccess.Write, FileShare.ReadWrite) ;
       ds.WriteXml(fOut, XmlWriteMode.WriteSchema);
       fOut.Close();
       Session["counter"]="Set" ;
     }
     Trace.Warn("表记录数",ds.Tables[0].Rows.Count.ToString());
    }
    catch(Exception edd)
    {
      Response.Write("<font color=#FF0000>"+edd.ToString()+"</font>") ;
    }
  }
}
</script>
</body>
</html>
----------------------
(5)读取URL里面的XML数据
C#读取URL里面的XML数据问题,正常情况下,都是读取静态的XML文件,但是在证券领域里面,XML数据是随时更新的。
比如第三方想我们提供XML数据,我们给第二方作开发,而第三提供给我们的是一个URL,这个URL是XML格式的内容,包含着我们要得数据。
这里例子是读取CSDN上的URL.
using System;
using System.Xml;
namespace ConsoleApplication5
{
  class Class1
  {
   [STAThread]
    static void Main(string[] args)
    {
     XmlDocument doc = new XmlDocument();
     doc.Load("http://www.csdn.net/expert/topic/1094/1094085.xml?temp=.9642145");
     doc.Save(Console.Out );
     }
   }
}
这样,该C#程序就会把从远程ASP页面传过来的XML显示在Console.Out(控制台的输出)了.
 
 
修改xml的节点
Dim MyRoot As XmlElement = MyDoc.DocumentElement
Dim XmlNodeList As XmlNodeList = MyRoot.SelectNodes("//PicNote/NoteList/ReplyNum/text()")
XmlNodeList(0).Value =  1
MyDoc.Save(MyXmlName)
 
 
 
 
 
 

我从System.Web.UI.UserControl继承建了一个用户控件PortalModuleControl,源码如下:
using System;
using System.Web;
public class PortalModuleControl : System.Web.UI.UserControl
{
 public string userState
 {       
  get
  {
   string str = HttpContext.Current.Items["kent"].ToString();
   return str;
  }
 }
  #region Web Form Designer generated code
}
然后以这个用户控件为类,别的用户控件都继承这个用户控件,以便所有的用户控件都具有userState这个属性。
下面我试着建立一个继承这个父类的用户控件,源码如下:
using System;
using System.Web;
using System.Web.UI.WebControls;
public class SelectPara : PortalModuleControl
{
 protected System.Web.UI.WebControls.Button Button1;
 
 private void Page_Load(object sender, System.EventArgs e)
 {
 }
 #region Web Form Designer generated code
}
是一个继承了PortalModuleControl 用户控件的用户控件,里面什么都没放置,就是一个空架子,这时问题就出现了,这个新建的用户控件一旦切换到设计视图的时候就出现一下错误:
“在web窗体设计器中无法加载该文件。请更正下列错误,然后重新加载:对象‘SelectPara ’上的属性访问器‘userState’发生一下异常:‘未将对象引用设置到对象的实例’”
然后这个用户控件就无法在设计器中设计了,只能在Html视图中设计了。
问题是,系统提示的‘未将对象引用设置到对象的实例’的‘userState’属性明明就是一个对象实例,HttpContext.Current.Items["kent"]是表示获取当前Http请求的Context的Items["kent"]中的object。
 
当您要在VS.NET的Web Form designer中打开继承的UserControl前,VS.NET会检查所有的Property并在属性对话框中把他们列举出来。很明显,此时的HttpContext.Current是空的,没有任何实例来初始化他。所以产生该错误。
建议您修改PortalModuleControl中的代码如下:
using System;
using System.Web;
public class PortalModuleControl : System.Web.UI.UserControl
{
 public string userState
 {       
  get
  {
   if ( (null!=HttpContext.Current) && (null!=HttpContext.Current.Items["kent"])
   {
    string str = HttpContext.Current.Items["kent"].ToString();
    return str;
   }
   else
   {
    return null;
   }
  }
 }
 #region Web Form Designer generated code
}
这样,错误信息就不会出现。希望能对您有一定的帮助。
 
 
 
给DataTable定义一个主键列
DataTable dt=new DataTable("dTable");  
DataColumn[] keys = new DataColumn[1];
dt.Columns.Add(new DataColumn("dKeys", typeof(string)));
dt.Columns.Add(new DataColumn("d1", typeof(string)));
dt.Columns.Add(new DataColumn("d2", typeof(string)));
keys[0] = dt.Columns["dKeys"];
dt.PrimaryKey = keys;
 
 

  怎样判断一个字符串是否位于一个enum中?
 
  比如我有一个enum{test1,test2}
有一个字符串test1
怎样判断这个字符串在enum中呢?
 
System.Enum.IsDefined(typeof(myenum),"test1")
我从映射的角度也写了一个,
 public enum Myenum
 {
  Test1 = 0,
  Test2 = 1
 }

   Type t = typeof(Myenum);
   string s = "";
   
   s += t.Name +"\r";
   FieldInfo[] fiArr=t.GetFields();
   s += fiArr.Length.ToString() + "\r";
   foreach(FieldInfo o in  fiArr)
   {
    if (o.Name =="Test1")
    {
     MessageBox.Show("I get It");
    }
   }
 
 
 

当前日期加上n个工作日,怎么去掉节假日时间?????
 
String addDay(string str,int num){
 String[][] holidays = new String[13][];
    for (int n=0; n<13 ;n++)
          holidays = new String[32];
 holidays[1][1]   = "元旦";
    holidays[1][26]  = "澳大利亚国庆节";
    holidays[2][2]   = "土拨鼠日";
    holidays[2][14]  = "情人节";
    holidays[3][17]  = "圣帕特里克节";
    holidays[4][1]   = "愚人节";
    holidays[5][1]   = "国际劳动节";
    holidays [15]  = "我的生日";
    holidays[7][15]  = "我的纪念日";
    holidays [15]  = "我母亲的生日";
    holidays[9][24]  = "秋分";
    holidays[12][26] = "节礼日";
   
    DateTime tmp=DateTime.Parse(str);
    for(int n=0;n<num;){
     tmp=tmp.AddDays(1);
     if(tmp.DayOfWeek==DayOfWeek.Saturday||tmp.DayOfWeek==DayOfWeek.Sunday)continue;
     if(holidays[tmp.Month][tmp.Day]!=null)continue;
     n++;
    }
    return tmp.ToShortDateString();;
}
eg.
addDay("2002-12-30",6)

现在我用Ado链接数据库
要向一个表插入一行记录
我可以有以下的选择方案,请各位评价一下效率
还有,如果要移植到其它数据库平台,还可以用吗?(Oracle 有SCOPE_IDENTITY()函数吗?)
1 用 _ConnectionPtr.Execute() 返回记录集
  rs = ConnectionPtr.Execute("selete top 1 * from tbl", ,,,);
  rs.AddNew();
  rs.Update();
  rs.MoveLast();
  rs.GetCollect("ID");
2 用_RecordsetPtr.Open()
  rs.Open("selete top 1 * from tbl", connect,,,);
  rs.AddNew();
  rs.Update();
  rs.MoveLast();
  rs.GetCollect("ID");
3 用 _ConnectionPtr.Execute("insert tbl1 values(,,,,) \r\n select SCOPE_IDENTITY() ");
4 用 _CommandPtr.Execute(("insert tbl1 values(,,,,) \r\n select SCOPE_IDENTITY() ");
 
怎样实现只有用鼠标点击button才执行此事件,而按回车什么也不会发生?
<body MS_POSITIONING="GridLayout" onkeydown="if(event.keyCode==13) return false;">
 
在用户控件中触发主页面内的事件或方法
 
假设主页面是WebForm1
另外一种方式是在主页面中写一个回调的方法:
private void WhenWebControlButtonClicked()
{
   //Do something
}
然后在WebControl的按钮事件中:
...
((WebForm1)Page).WhenWebControlButtonClicked(); //调用页面的方法
 
 
譬如,在DataSet中的Users表中,Privilege列的值可能为"Admin"、“User”和“Guest”,一般往DataGrid中绑定可以采用下面的语句:
<%# DataBinder.Eval(Container.DataItem, 'UserAddress') %>
但我希望能根据数据库中的字符串,更改成中文显示,譬如,如果是“admin”,就显示成“管理员”,如果是“ User”就显示成“普通用户”。这应该怎么办啊。

在类中写一个方法:
public string GetName(string Value)
  {
   switch(Value.Trim().ToLower)
   {
    case "admin":
     return "管理员";
     break;
    case "user":
     return "普通用户";
     break;
    case "guest":
     return "客人";
     break;
   }
  }
在这html中数据绑定处加入此方法,如下
<%# GetName(DataBinder.Eval(Container.DataItem, 'UserAddress')) %>
或者
可以在datagrid的ItemDataBound事件中
if(e.Item.Cells[1].Text.Trim()=="admin")
   {
    e.Item.Cells[5].Text="管理员";
   }
模板列:
SqlDataAdapter myCommand = new SqlDataAdapter("select * from test", myConnection);
   
   DataSet ds = new DataSet();
   myCommand.Fill(ds, "test");
   DataGrid1.DataSource=ds.Tables["test"].DefaultView;
   int num=ds.Tables["test"].Rows.Count;
   DataGrid1.DataBind();
   for(int i=0;i<num;i++)
   {
    
    Label La2=(Label)(DataGrid1.Items .FindControl("Label2"));
    
    if(La2!=null)
    {
     if(La2.Text.Trim()=="1")La2.Text="选中";
     if(La2.Text.Trim()=="0")La2.Text="未选中";
     
    }
   }

请问怎样只显示一部分字符串?
<%# DataBinder.Eval(Container.DataItem, "test").ToString().Substring(0,2) %>
 
怎样手工配置IIS?
在“运行”中执行:C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\aspnet_regiis -i
在“运行”中执行:C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\aspnet_regiis -i
(把C:换成你的系统盘)
注册IIS
open a dos window, run
"%windir%\Microsoft.NET\Framework\v1.0.3705\aspnet_regiis.exe" -i
 
 
 

unicode字符转汉字显示
string s1="\u52a8\u7f51\u65b0\u95fb";
byte[] by=System.Text.Encoding.Default.GetBytes(s1);
Console.Write(System.Text.Encoding.Default.GetString(by));
 
 

把DataSet生成的XML放入数据库,再取出来,重新读入DataSet时,会出错。
据分析,可能是编码不是UTF-所导致的。
Imports System
Imports System.IO
Imports System.Xml
 
public class Sample
  public shared sub Main()
  
    ' Create and load the XML document.
    Dim doc as XmlDocument = new XmlDocument()
    Dim xmlString as string = "<book><title>Oberon's Legacy</title></book>"
    doc.Load(new StringReader(xmlString))
 
    ' Create an XML declaration.
    Dim xmldecl as XmlDeclaration
    xmldecl = doc.CreateXmlDeclaration("1.0",nothing, nothing)
    xmldecl.Encoding="UTF-8" '//指定编码
    xmldecl.Standalone="yes"    
     
    ' Add the new node to the document.
    Dim root as XmlElement = doc.DocumentElement
    doc.InsertBefore(xmldecl, root)
   
    ' Display the modified XML document
    Console.WriteLine(doc.OuterXml)
     
  end sub
end class
 
 
 
 
 
读取这种XML中的信息?
<record> 
     <a1>XX</a1> 
     <a2>YY</a2> 
     <a3>ZZ</a3> 
     。。。。。。 
</record> 
using System.Xml;
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("PathToYourXmlYouMightNeedServerMapPathOrUseLoadXmlIfYouHaveAString");
XmlNodeList list = xmldoc.SelectNodes("/record/*");
string[] slist = new string[list.Count];
int i=0;
foreach (XmlNode node in list)
{
  slist[i++] = node.InnerText;
}
 
<all>
<record1> 
     <a1>XX1</a1> 
     <a2>YY1</a2> 
     <a3>ZZ1</a3> 
     。。。。。。 
</record1>
<record2> 
     <a1>XX2</a1> 
     <a2>YY2</a2> 
     <a3>ZZ2</a3> 
     。。。。。。 
</record2>
....
</all>
XmlNodeList list = xmldoc.SelectNodes("/*/*");
有两个表,结构完全相似,分别位于两个DataSet中,我想将它们显示在一个DataGrid中。目前的想法是:将它们合并于一个DataSet的一个表中,然后再显示。
1.我现在合并不了它们,请问该如何做?
2.有其他的方法完成上述工作吗?

DataSet ds1;
DataSet ds2;

foreach( DataRow row in ds1.Tables[0].Rows )
{
ds2.Tables[0].ImportRow( row );
}

合并到ds2的Tables[0]中





原有的DataSet.Tables[0]表中增加ID列?

DataColumn myDataColumn= customerTable.Columns.Add("ID",System.Type.GetType("System.Decimal"));
int i=0;
foreach( DataRow row in customerTable.Rows )
{
row["id"]= i++;
}



如何开一个窗口,只有关闭,没有最小化与还原按纽????

window.showModalDialog("SMD_target.htm","Dialog Arguments Value","dialogHeight: 63px; dialogWidth: 331px; dialogTop: 493px; dialogLeft: 771px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;");






在DataGrid的每行中有一个TextBox,在敲回车键的时候,如何让光标跳到下一行的TextBox中?


try to add the following javascript to your page:

<script language="javascript">
function document.onkeydown()
{
if (event.keyCode == 13)
event.keyCode = 9;
}
</script>

or a more sophisticated solution:

<script language="javascript">
function document.onkeydown()
{
var e = event.srcElement;
if (event.keyCode == 13)
{
if (e.tagName == "INPUT" && e.type == "text")
{
//find the next input;
for(var i= e.sourceIndex+1; i < document.all.length; i++)
{
if (document.all .tagName == "INPUT" && document.all .type == "text")
{
document.all .focus();
break;
}
}
}
}
}
</script>













XSL用的名称空间是<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
不是<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
所以里面的<xsl:copy-of用不了,XML中内容中含有<br />,怎么能把<br />正常显示,在IE5下也能够正常观看??



XSLT怎么让文字换行呢?

your xml is invalid:

<XML_T1>
<Info>this is test1 <br/> this is test2 <br/>this is test <br/></Info>
</XML_T1>


then try

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="XML_T1">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>

<xsl:template match="Info">
<xsl:copy-of select="node()" />
</xsl:template>
</xsl:stylesheet>


不是1999/XSL/Transform">
还是用的ww.w3.org/TR/WD-xsl">
所有copy-of function有问题





<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="XML_T1">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="Info">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="br">
<br />
</xsl:template>

<xsl:template match="text()">
<xsl:value-of select="." />
</xsl:template>

</xsl:stylesheet>








关于项目的打包部署


1.打开你的.net,用鼠标右击你的工程(解决方案),选择add new project(添加新建项目)。

2.选择setup and deployment projects(安装和部署项目)的 web setup project(web安装项目)。(注意setupproject的存放路径。通常默认)

3.vs的窗口会显示文件系统(you setup name)。用鼠标点击左栏下的"web application folder" 的加号,右键选中"web application folder",选择"添加项目输出",
同时选中primary output 和content files。

4.你的工程中会新增一个yousetupname的工程,就是安装的项目。保存一下,有时会出错。

5.因为.xml, .rpt, .gif文件不能自动加到项目中,所以要手动加。在解决方案资源管理器中,右击YouSetup project(你的安装项目名),选中"添加文件",然后把你的.rpt, .xml, .gif文件加入;

6.如果你用了crystal report,就要添加crystal reprot的支持文件。在解决方案资源管理器中,右击YouSetup project(你的安装项目名),选中"添加合并模块",在窗口中找到,并选中C:\Program Files\Common Files\Merge Modules\DotNETCrystalReports.msm, 打开,就加入了;



7.右击"目标计算机上的文件系统",选中属性,在属性窗口中,将productName设置为"你要打包的项目名"

8.右击"web应用程序文件夹",选中属性,在属性窗口中,将DefaultDocument设置为"你的默认登录页"即"起始页",

9.选中你的yousetupname工程,按右键,选中"生成";或在主菜单的"生成"中选中"生成yourSetupFileName";

10.然后,在C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\KaoQin\文件的存放路径下会有一个yousetupname的文件夹,下面还有一个debug的文件夹,你要的就是debug下面的所有文件。

11.将debug folder 下的文件考到你要安装的机器上,然后安装就可以了,如果有数据库,你可以将库事先还原过去,就可以用了。


补充:
在把crystal report 打包时 最好参见 crystal report 的打包说明文档

http://support.crystaldecisions.com/communityCS/TechnicalPapers/crnet_deployment.pdf



看了yaoyuhang(汤姆)给出的网址和打包水晶报表时向客户端计算机分发 Crystal 运行时文件:
ms-help://MS.VSCC/MS.MSDNVS.2052/crystlmn/html/crcondistributingcrystalruntimefilestoaclientcomputer.htm
说的一样,这就是说打包水晶报表是要向客户端计算机分发Crystal 运行时文件














1、控制"纵打"、 横打”和“页面的边距。
(1)<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"

// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>

(2)
<script language="javascript">
function printsetup(){
// 打印页面设置
wb.execwb(8,1);
}
function printpreview(){
// 打印页面预览

wb.execwb(7,1);


}

function printit()
{
if (confirm('确定打印吗?')) {
wb.execwb(6,6)
}
}
</script>
</head>
<body>
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"

height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="打印"

onclick="javascript:printit()">
<input type=button name=button_setup value="打印页面设置"

onclick="javascript:printsetup();">
<input type=button name=button_show value="打印预览"

onclick="javascript:printpreview();">
<input type=button name=button_fh value="关闭"

onclick="javascript:window.close();">

------------------------------------------------
关于这个组件还有其他的用法,列举如下:
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示

2、分页打印
<HTML>
<HEAD>
<STYLE>
P {page-break-after: always}
</STYLE>
</HEAD>
<BODY>
<%while not rs.eof%>
<P><%=rs(0)%></P>
<%rs.movenext%>
<%wend%>
</BODY>
</HTML>

3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号
(1)ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉,打印就不出来了。
(2)<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="YC">
<script language="VBScript">
dim hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\Software\Microsoft\Internet Explorer\PageSetup"
'//设置网页打印的页眉页脚为空
function pagesetup_null()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
end function
'//设置网页打印的页眉页脚为默认值
function pagesetup_default()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b页码,&p/&P"
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d"
end function
</script>
</HEAD>

<BODY>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/><p align=center>
<input type="button" value="清空页码" onclick=pagesetup_null()> <input type="button" value="恢复页吗" onclick=pagesetup_default()><br/>

</p>
</BODY>
</HTML>
4、浮动帧打印
<SCRIPT LANGUAGE=javascript>
function button1_onclick() {
var odoc=window.iframe1.document;
var r=odoc.body.createTextRange();
var stxt=r.htmlText;
alert(stxt)
var pwin=window.open("","print");
pwin.document.write(stxt);
pwin.print();
}
</SCRIPT>
4、用FileSystem组件实现WEB应用中的本地特定打印
<script Language=VBScript>
function print_onclick //打印函数
dim label
label=document.printinfo.label.value //获得HTML页面的数据
set objfs=CreateObject("Scripting.FileSystemObject") //创建FileSystem组件对象的实例
set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立与打印机的连接
objprinter.Writeline("__________________________________") //输出打印的内容
objprinter.Writeline("| |")
objprinter.Writeline("| 您打印的数据是:"&label& " |”)
objprinter.Writeline("| |")
objprinter.Writeline("|_________________________________|")
objprinter.close //断开与打印机的连接
set objprinter=nothing
set objfs=nothing // 关闭FileSystem组件对象
end function
</script>
服务器端脚本:
<%………
set conn=server.CreateObject ("adodb.connection")
conn.Open"DSN=name;UID=XXXX;PWD=XXXX;"
set rs=server.CreateObject("adodb.recordset")
rs.Open(“select ……”),conn,1,1
……….%> //与数据库进行交互
HTML页面编码:
<HTML>
………
<FORM ID=printinfo NAME="printinfo" >
<INPUT type="button" value="打印>>" id=print name=print > //调用打印函数
<INPUT type=hidden id=text1 name= labelvalue=<%=………%>> //保存服务器端传来的数据
………
</HTML>

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

最后一段是ASP的,我想没人会看不懂吧



在程序中得到ie的版本


try:
Request.ServerVariables["HTTP_USER_AGENT"]


string IEVersion;
IEVersion = Request.ServerVariables["HTTP_USER_AGENT"];
if (IndexOf(IEVersion , "IE 6") == -1)
Response.Write("not IE 6");
else
Response.Write("is IE 6");



string IEVersion;
IEVersion = Request.Browser.Version;





sql2000网络备份,是用域帐号登陆数据库服务器,把数据库备份在域的另一台电脑上(假设为ABC),为何在数据库服务器资源管理器上可以看见网络共享的文件夹(\\abc\bak),也可映射到本地(H:\),但sql2000的设备看不见(\\abc\bak) 和映射驱动器(H:\)?




SQL异地备份失败,归根结底是权限问题!!!
如:
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具-->服务-->mssql项-->属性-->指定用户及密码)
5、\\192.168.*.*\文件夹\ShareBak.Bak就可以了
-----------------------------------------------------------
简单一点就是:
如果你两台都是windows2ks
你的机器也用同样的Administrator密码,且sql服务器用administrator启动
那你写设备时就可以写:\\ip\.......

如果你是98那你要完全共享一下!
你写设备时就可以写:\\ip\.......




关于C#下运行dos程序后获得其输出信息的问题
http://expert.csdn.net/Expert/topic/1680/1680885.xml?temp=.8682215


程序运行结果重定向,比如你的:msam test.asm改成:masm test.asm>test.txt

然后你在程序中打开test.txt文件,自己read处理吧!

或者
Process p = new Process();
p.StartInfo .WorkingDirectory ="c:\\";
p.StartInfo.FileName = "ping.exe";
p.StartInfo.Arguments="www.sina.com.cn";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start ();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit ();
MessageBox.Show(output);




SQL Server 7.0数据库的六种数据移动方法
编程 摘自:
本人从事的工作是数据库管理员,要维护多台服务器中的数据库,经常把某台服务器中的某个数据库移动到另外一台服务器,对数据的移动有些心得体会,希望和大家共同交流。
1. 通过工具DTS的设计器进行导入或导出
DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很细,可以灵活的在不同数据源之间复制数据,很方便的。而且可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力。也可以直接打开DTS设计器,方法是展开服务器名称下面的Data Transformation Services,选Local Packages,在右边的窗口中右击,选New Package,就打开了DTS设计器。值得注意的是:如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引。
其实建立数据库时,建立外键,主键,索引的文件应该和建表文件分开,而且用的数据文件也分开,并分别放在不同的驱动器上,有利于数据库的优化。
2. 利用Bcp工具
这种工具虽然在SQL Server7的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQL Server早期版本的人。Bcp有局限性,首先它的界面不是图形化的,其次它只是在SQL Server的表(视图)与文本文件之间进行复制,但它的优点是性能好,开销小,占用内存少,速度快。有兴趣的朋友可以查参考手册。
3. 利用备份和恢复
先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复操作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了。这种方法可以完全恢复数据库,包括外键,主键,索引。
4. 直接拷贝数据文件
把数据库的数据文件(*.mdf)和日志文件(*.ldf)都拷贝到目的服务器,在SQL Server Query Analyzer中用语句进行恢复:
EXEC sp_attach_db @dbname = 'test',
@filename1 = 'd:\mssql7\data\test_data.mdf',
@filename2 = 'd:\mssql7\data\test_log.ldf'
这样就把test数据库附加到SQL Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:
EXEC sp_detach_db @dbname = 'test'
EXEC sp_attach_single_file_db @dbname = 'test',
@physname = 'd:\mssql7\data\test_data.mdf'
这个语句的作用是仅仅加载数据文件,日志文件可以由SQL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。
5. 在应用程序中定制
可以在应用程序(PB、VB)中执行自己编写的程序,也可以在Query Analyzer中执行,这种方法比较灵活,其实是利用一个平台连接到数据库,在平台中用的主要时SQL语句,这种方法对数据库的影响小,但是如果用到远程链接服务器,要求网络之间的传输性能好,一般有两种语句:
1> select ... into new_tablename where ...
2> insert (into) old_tablename select ... from ... where ...
区别是前者把数据插入一个新表(先建立表,再插入数据),后者是把数据插入已经存在的一个表中,我个人喜欢后者,因为在编程的结构上,应用的范围上,第二条语句强于前者。
6. SQL Server的复制功能
SQL Server提供了强大的数据复制功能,也是最不易掌握的,具体应用请参考相关资料,值得注意的是要想成功进行数据的复制工作,有些条件是必不可少的:
1>SQL Server Agent必须启动,MSDTC必须启动。
2>所有要复制的表必须有主键。
3>如果表中有text或image数据类型,必须使用with log选项,不能使用with no_log选项。
另外max text repl size选项控制可以复制的文本和图像数据的最大规模,超过这个限制的操作将失败。
4>在要进行复制的计算机上,应该至少是隐含共享,即共享名是C$或D$…。
5>为SQL Server代理使用的Windows NT帐号不能是一个本地的系统帐号,因为本地的系统帐号不允许网络存取。
6>如果参与复制的服务器在另外的计算机域中,必须在这些域之间建立信任关系。









数据库的备份与恢复



给你一个备份的存储过程你调用就可以了:
create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复

@retmsg varchar(20) output --返回信息
AS
DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)

DECLARE @RC INT

SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0
select @DevName_data='dali',@DevName_log='dalilog'

DBCC CHECKDB(数据库名)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN

EXEC sp_addumpdevice 'disk', @DevName_data,@db_path

exec sp_addumpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END

IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END

IF @kind='restore'
BEGIN
RESTORE DATABASE 数据库名 FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END

EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log

RETURN 0

---测试:
declare @ varchar(100)
exec gy_dbbak 0,'aa',0,0,0,'backup',@ output
select @
-------------------------------------------------
备份设备:
sp_helpdevice


use master
select * from sysdevices












在asp.net中备份和恢复数据库



通过引用COM组件 Microsoft SQLDMO Library 组件实现。
比如SQLServer服务器为SQLTest,拥护名sa,密码为空,数据库为DBTest。
则备份到服务器D:\test.bak文件,C#代码如下。
SQLDMO.SQLServerClass sqldmo=new SQLDMO.SQLServerClass();//创建SQLServerClass类对象sqldmo
sqldmo.Connect("SQLTest","sa",""); //调用对象Connect方法连接服务器
SQLDMO.BackupClass sqlbakcup=new SQLDMO.BackupClass(); //创建BackupClass备份对象
sqlbakcup.Database="DBTest"; //设置备份对象的Database属性
sqlbakcup.Files="D:\\test.bak"; //备份文件名
sqlbakcup.SQLBackup(sqldmo); //进行备份
至此,整个备份已经成功。

备份和还原数据库

CREATE PROCEDURE Pbackup
AS
BACKUP DATABASE NorthWind TO DISK='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_2.dat'
GO

CREATE PROCEDURE PRestore
AS
RESTORE DATABASE NorthWind FROM DISK ='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_2.dat'
GO


datagrid中ItemCommand,itemdatabound,itemcreated分别在什么情况下触发?


ItemCommand、CancelCommand、DeleteCommand、EditCommand、UpdateCommand
也就是DataGrid中,点击Button、LinkButton后执行的事件,执行的事件取决于按钮的CommandName。其实最主要的一个是ItemCommand,而后面四个都只是ItemCommand的一小部分,
比如一个按钮的CommandName为"Cancel",当返回后,首先执行的是ItemCommand事件,然后才是CancelCommand事件。

ItemDataBound,ItemCreated
首先要说的是这两个事件的发生时间。
ItemDataBound嘛,只要执行了DataBind方法,就会马上激发这个事件。
ItemCreated呢,如果页面是第一次访问(Page.IsPostBack = false),那在第一次执行DataBind的时候,会先激发ItemCreated事件,也就是说,执行了DataBind后,首先会用ItemCreated来建立Header行,然后用ItemDataBound来绑定Header行,再用ItemCreated来建立第一行,再调用ItemDataBound来绑定第一行,也就是说ItemCreated和ItemDataBound是交替执行的。
页面返回时,也会执行ItemCreated事件,在Page_Load之前,但是这时候就不会再执行ItemDataBound事件了。
所以,如果你想在DataGrid里动态添加什么控件,就需要在ItemCreated事件中,而不是在ItemDataBound事件中。




怎样将数据从access库中导入到sqlserver

Public Sub ExecTans(ByVal sqlStrList As String())
Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\UserLog.mdb")
Dim trans As OleDb.OleDbTransaction = Nothing
Try
If (conn.State = ConnectionState.Closed) Then
conn.Open()
End If
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand()
cmd.Connection = conn
cmd.CommandType = CommandType.Text
trans = conn.BeginTransaction
cmd.Transaction = trans
Dim i As Integer
For i = 0 To sqlStrList.GetUpperBound(0)
cmd.CommandText = sqlStrList(i)
cmd.ExecuteNonQuery()
Next
trans.Commit()
Catch ex As OleDb.OleDbException
trans.Rollback()
Throw (New Exception(ex.Message))
Finally
conn.Close()
End Try
End Sub


Public Sub Insert()
Dim dt As DataTable = New DataTable()
Dim dr As DataRow
dt.Columns.Add(New DataColumn("name"))
Dim j As Integer
For j = 1 To 10
dr = dt.NewRow()
dr(0) = "name" + j.ToString()
dt.Rows.Add(dr)
Next
DataGrid2.DataSource = dt
DataGrid2.DataBind()
Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\UserLog.mdb")
conn.Open()
Dim myAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter()
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand("Insert into mm (name) values (@name)", conn)
cmd.Parameters.Add("@name", "name")
cmd.Parameters.Item("@name").SourceColumn = dt.Columns("name").ColumnName
myAdapter.InsertCommand = cmd
myAdapter.Update(dt)
conn.Close()
End Sub



select @@identity
posted on 2005-06-22 09:23 ╃小〥斌╄ 阅读(1782) 评论(0)  编辑 收藏 所属分类: asp.net专栏

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-06-22 09:25 编辑过
 
另存  打印