- 浏览: 21366442 次
- 性别:
- 来自: 杭州
最新评论
-
ZY199266:
配置文件还需要额外的配置ma
Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程 -
ZY199266:
我的一访问为什么是 /mavenwebdemo/WEB-I ...
Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程 -
lvgaga:
我又一个问题就是 如果像你的这种形式写。配置文件还需要额外的 ...
Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程 -
lvgaga:
我的一访问为什么是 /mavenwebdemo/WEB-I ...
Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程 -
y1210251848:
你的那个错误应该是项目所使用的目标框架不支持吧
log4net配置(web中使用log4net,把web.config放在单独的文件中)
SP.NET开发人员经常使用的三十三种代码
几年前,一篇《ASP.NET开发人员经常使用的三十三种代码》非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用。今天重读这篇文章,有感而发,善于总结也是进步,于是我也从我的项目中总结一些常用的代码片段,分享给各位园友。 1. 打开新的窗口并传送参数: 传送参数:response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>") 接收参数:string
a = Request.QueryString("id");string b = Request.QueryString("id1"); 2.为按钮添加对话框Button1.Attributes.Add("onclick","return confirm(’确认?’)");button.attributes.add("onclick","if(confirm(’are you sure...?’)){return true;}else{return false;}") 3.删除表格选定记录int intEmpID
= (int)MyDataGrid.DataKeys[e.Item.ItemIndex];string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString() 4.删除表格记录警告private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e){ switch(e.Item.ItemType) { case ListItemType.Item
: case ListItemType.AlternatingItem : case ListItemType.EditItem: TableCell myTableCell; myTableCell = e.Item.Cells[14]; LinkButton myDeleteButton ; myDeleteButton = (LinkButton)myTableCell.Controls[0]; myDeleteButton.Attributes.Add("onclick","return
confirm(’您是否确定要删除这条信息’);"); break; default: break; }} 5.点击表格行链接另一页private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){ //点击表格打开 if (e.Item.ItemType == ListItemType.Item e.Item.ItemType == ListItemType.AlternatingItem) e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id="
+ e.Item.Cells[0].Text + "’);");} 双击表格连接到另一页 在itemDataBind事件中if(e.Item.ItemType == ListItemType.Item e.Item.ItemType == ListItemType.AlternatingItem){ string OrderItemID =e.item.cells[1].Text; ... e.item.Attributes.Add("ondblclick", "location.href=’../ShippedGrid.aspx?id="
+ OrderItemID + "’");} 双击表格打开新一页if(e.Item.ItemType == ListItemType.Item e.Item.ItemType == ListItemType.AlternatingItem){ string OrderItemID =e.item.cells[1].Text; ... e.item.Attributes.Add("ondblclick", "open(’../ShippedGrid.aspx?id=" + OrderItemID +
"’)");} ★特别注意:【?id=】 处不能为 【?id =】 6.表格超连接列传递参数 <asp:HyperLinkColumn Target="_blank" headertext="ID号" DataTextField="id" NavigateUrl="aaa.aspx?id=’ <%# DataBinder.Eval(Container.DataItem, "数据字段1")%>’ & name=’<%# DataBinder.Eval(Container.DataItem, "数据字段2")%>’
/> 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=’’;");}
8.关于日期格式 日期格式设定DataFormatString="{0:yyyy-MM-dd}" 我觉得应该在itembound事件中e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd")) 9.获取错误信息并到指定页面 不要使用Response.Redirect,而应该使用Server.Transfer e.g// in global.asaxprotected void
Application_Error(Object sender, EventArgs e) {if (Server.GetLastError() is HttpUnhandledException)Server.Transfer("MyErrorPage.aspx");//其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :)} Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理 10.清空CookieCookie.Expires=[DateTime];Response.Cookies("UserName").Expires
= 0 11.自定义异常处理//自定义异常处理类 using System;using System.Diagnostics;namespace MyAppException{ /// <summary> /// 从系统异常类ApplicationException继承的应用程序异常处理类。 /// 自动将异常内容记录到Windows NT/2000的应用程序日志 /// </summary> public class AppException:System.ApplicationException { public
AppException() { if (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。"); } public AppException(string message) { LogEvent(message); } public AppException(string message,Exception innerException) { LogEvent(message); if (innerException !=
null) { LogEvent(innerException.Message); } } //日志记录类 using System; using System.Configuration; using System.Diagnostics; using System.IO; using System.Text; using System.Threading; namespace MyEventLog { /// <summary> /// 事件日志记录类,提供事件日志记录支持 /// <remarks> ///
定义了4个日志记录方法 (error, warning, info, trace) /// </remarks> /// </summary> public class ApplicationLog { /// <summary> /// 将错误信息记录到Win2000/NT事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public static void WriteError(String message) { WriteLog(TraceLevel.Error,
message); } /// <summary> /// 将警告信息记录到Win2000/NT事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public static void WriteWarning(String message) { WriteLog(TraceLevel.Warning, message); } /// <summary> /// 将提示信息记录到Win2000/NT事件日志中 ///
<param name="message">需要记录的文本信息</param> /// </summary> public static void WriteInfo(String message) { WriteLog(TraceLevel.Info, message); } /// <summary> /// 将跟踪信息记录到Win2000/NT事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public
static void WriteTrace(String message) { WriteLog(TraceLevel.Verbose, message); } /// <summary> /// 格式化记录到事件日志的文本信息格式 /// <param name="ex">需要格式化的异常对象</param> /// <param name="catchInfo">异常信息标题字符串.</param> /// <retvalue> /// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para> ///
</retvalue> /// </summary> public static String FormatException(Exception ex, String catchInfo) { StringBuilder strBuilder = new StringBuilder(); if (catchInfo != String.Empty) { strBuilder.Append(catchInfo).Append("\r\n"); } strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace); return
strBuilder.ToString(); } /// <summary> /// 实际事件日志写入方法 /// <param name="level">要记录信息的级别(error,warning,info,trace).</param> /// <param name="messageText">要记录的文本.</param> /// </summary> private static void WriteLog(TraceLevel level, String messageText) { try {
EventLogEntryType LogEntryType; switch (level) { case TraceLevel.Error: LogEntryType = EventLogEntryType.Error; break; case TraceLevel.Warning: LogEntryType = EventLogEntryType.Warning; break; case TraceLevel.Info: LogEntryType
= EventLogEntryType.Information; break; case TraceLevel.Verbose: LogEntryType = EventLogEntryType.SuccessAudit; break; default: LogEntryType = EventLogEntryType.SuccessAudit; break; } EventLog eventLog = new
EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName ); //写入事件日志 eventLog.WriteEntry(messageText, LogEntryType); } catch {} //忽略任何异常 } } //class ApplicationLog} 12.Panel 横向滚动,纵向自动扩展
<asp:panel ></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"+"\""); }} 16.模板列<ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID"><ITEMTEMPLATE><ASP:LABEL text=’<%# DataBinder.Eval(Container.DataItem, "ArticleID")%>’ runat="server" width="80%" id="lblColumn" /></ITEMTEMPLATE></ASP:TEMPLATECOLUMN><ASP:TEMPLATECOLUMN
headertext="选中"><HEADERSTYLE wrap="False" horizontalalign="Center"></HEADERSTYLE><ITEMTEMPLATE><ASP:CHECKBOX id="chkExport" runat="server" /></ITEMTEMPLATE><EDITITEMTEMPLATE><ASP:CHECKBOX id="chkExportON" runat="server" enabled="true" /></EDITITEMTEMPLATE></ASP:TEMPLATECOLUMN> 后台代码protected
void CheckAll_CheckedChanged(object sender, System.EventArgs e){ //改变列的选定,实现全选或全不选。 CheckBox chkExport ; if( CheckAll.Checked) { foreach(DataGridItem oDataGridItem in MyDataGrid.Items) { chkExport = (CheckBox)oDataGridItem.FindControl("chkExport"); chkExport.Checked
= true; } } else { foreach(DataGridItem oDataGridItem in MyDataGrid.Items) { chkExport = (CheckBox)oDataGridItem.FindControl("chkExport"); chkExport.Checked = false; } }} 17.数字格式化 【<%#Container.DataItem("price")%>的结果是500.0000,怎样格式化为500.00?】<%#Container.DataItem("price","{0:¥#,##0.00}")%>int
i=123456;string s=i.ToString("###,###.00"); 18.日期格式化 【aspx页面内:<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date")%> 显示为: 2004-8-11 19:44:28 我只想要:2004-8-11 】<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%> 应该如何改? 【格式化日期】 取出来,一般是object((DateTime)objectFromDB).ToString("yyyy-MM-dd"); 【日期的验证表达式】 A.以下正确的输入格式:
[2004-2-29], [2004-02-29 10:29:39 pm], [2004/12/31]^((\d{2}(([02468][048]) ([13579][26]))[\-\/\s]?((((0?[13578]) (1[02]))[\-\/\s]?((0?[1-9]) ([1-2][0-9]) (3[01]))) (((0?[469]) (11))[\-\/\s]?((0?[1-9]) ([1-2][0-9]) (30))) (0?2[\-\/\s]?((0?[1-9]) ([1-2][0-9]))))) (\d{2}(([02468][1235679]) ([13579][01345789]))[\-\/\s]?((((0?[13578]) (1[02]))[\-\/\s]?((0?[1-9]) ([1-2][0-9]) (3[01]))) (((0?[469]) (11))[\-\/\s]?((0?[1-9]) ([1-2][0-9]) (30))) (0?2[\-\/\s]?((0?[1-9]) (1[0-9]) (2[0-8]))))))(\s(((0?[1-9]) (1[0-2]))\:([0-5][0-9])((\s) (\:([0-5][0-9])\s))([AM PM am pm]{2,2})))?$ B.以下正确的输入格式:[0001-12-31],
[9999 09 30], [2002/03/03]^\d{4}[\-\/\s]?((((0[13578]) (1[02]))[\-\/\s]?(([0-2][0-9]) (3[01]))) (((0[469]) (11))[\-\/\s]?(([0-2][0-9]) (30))) (02[\-\/\s]?[0-2][0-9]))$ 【大小写转换】HttpUtility.HtmlEncode(string);HttpUtility.HtmlDecode(string) 19.如何设定全局变量 Global.asax中 Application_Start()事件中 添加Application[属性名]
= xxx; 就是你的全局变量 20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口? HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank") 【ASPNETMENU】点击菜单项弹出新窗口 在你的menuData.xml文件的菜单项中加入URLTarget="_blank",如:<?xml version="1.0" encoding="GB2312"?><MenuData ImagesBaseURL="images/">
<MenuGroup><MenuItem Label="内参信息" URL="Infomation.aspx" ><MenuGroup ID="BBC"><MenuItem Label="公告信息" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/><MenuItem Label="编制信息简报" URL="NewInfo.aspx" LeftIcon="file.gif" />...... 最好将你的aspnetmenu升级到1.2版 21.读取DataGrid控件TextBox值foreach(DataGrid
dgi in yourDataGrid.Items){ TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId"); tb.Text....} 23.在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> 24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。page_load
page.smartNavigation=true 25.在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小 ?private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e){ for(int i=0;i<e.Item.Cells.Count-1;i++) if(e.Item.ItemType==ListItemType.EditType) { e.Item.Cells[i].Attributes.Add("Width",
"80px") } } 26.对话框private static string ScriptBegin = "<script language=\"JavaScript\">";private static string ScriptEnd = "</script>";public static void ConfirmMessageBox(string PageTarget,string Content){ string ConfirmContent="var retValue=window.confirm(’"+Content+"’);"+"if(retValue){window.location=’"+PageTarget+"’;}"; ConfirmContent=ScriptBegin
+ ConfirmContent + ScriptEnd; Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler; ParameterPage.RegisterStartupScript("confirm",ConfirmContent); //Response.Write(strScript);} 27. 将时间格式化:string aa=DateTime.Now.ToString("yyyy年MM月dd日"); 1.1 取当前年月日时分秒currentTime=System.DateTime.Now; 1.2
取当前年int 年= DateTime.Now.Year; 1.3 取当前月int 月= DateTime.Now.Month; 1.4 取当前日int 日= DateTime.Now.Day; 1.5 取当前时int 时= DateTime.Now.Hour; 1.6 取当前分int 分= DateTime.Now.Minute; 1.7 取当前秒int 秒= DateTime.Now.Second; 1.8 取当前毫秒int 毫秒= DateTime.Now.Millisecond; 28.自定义分页代码: 先定义变量
:public static int pageCount; //总页面数 public static int curPageIndex=1; //当前页面 下一页:if(DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1)) { DataGrid1.CurrentPageIndex += 1; curPageIndex+=1; }bind(); // DataGrid1数据绑定函数 上一页:if(DataGrid1.CurrentPageIndex
>0) { DataGrid1.CurrentPageIndex += 1; curPageIndex-=1; }bind(); // DataGrid1数据绑定函数 直接页面跳转:int a=int.Parse(JumpPage.Value.Trim());//JumpPage.Value.Trim()为跳转值if(a<DataGrid1.PageCount) { this.DataGrid1.CurrentPageIndex=a; }bind(); 29.DataGrid使用: 添加删除确认:private
void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { foreach(DataGridItem di in this.DataGrid1.Items) { if(di.ItemType==ListItemType.Item di.ItemType==ListItemType.AlternatingItem) { ((LinkButton)di.Cells[8].Controls[0]).Attributes.Add("onclick","return
confirm(’确认删除此项吗?’);"); } } } 样式交替:ListItemType itemType = e.Item.ItemType;if (itemType == ListItemType.Item ) { e.Item.Attributes["onmouseout"] = "javascript:this.style.backgroundColor=’#FFFFFF’;"; e.Item.Attributes["onmouseover"] = "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;"
; } else if( itemType == ListItemType.AlternatingItem) { e.Item.Attributes["onmouseout"] = "javascript:this.style.backgroundColor=’#a0d7c4’;"; e.Item.Attributes["onmouseover"] = "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;" ; } 添加一个编号列:DataTable
dt= c.ExecuteRtnTableForAccess(sqltxt); //执行sql返回的DataTable DataColumn dc=dt.Columns.Add("number",System.Type.GetType("System.String"));for(int i=0;i<dt.Rows.Count;i++) { dt.Rows[i]["number"]=(i+1).ToString(); }DataGrid1.DataSource=dt; DataGrid1.DataBind(); DataGrid1中添加一个CheckBox,页面中添加一个全选框private
void CheckBox2_CheckedChanged(object sender, System.EventArgs e) { foreach(DataGridItem thisitem in DataGrid1.Items) { ((CheckBox)thisitem.Cells[0].Controls[1]).Checked=CheckBox2.Checked; } } 将当前页面中DataGrid1显示的数据全部删除foreach(DataGridItem thisitem in DataGrid1.Items)
{ if(((CheckBox)thisitem.Cells[0].Controls[1]).Checked) { string strloginid= DataGrid1.DataKeys[thisitem.ItemIndex].ToString(); Del (strloginid); //删除函数 } } 30.当文件在不同目录下,需要获取数据库连接字符串(如果连接字符串放在Web.config,然后在Global.asax中初始化) 在Application_Start中添加以下代码:Application["ConnStr"]=this.Context.Request.PhysicalApplicationPath+ConfigurationSettings. AppSettings["ConnStr"].ToString(); 31.
变量.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% 32、变量.Substring(参数1,参数2); 截取字串的一部分,参数1为左起始位数,参数2为截取几位。
如:string s1 = str.Substring(0,2); 33.在自己的网站上登陆其他网站:(如果你的页面是通过嵌套方式的话,因为一个页面只能有一个FORM,这时可以导向另外一个页面再提交登陆信息)<SCRIPT language="javascript"> <!-- function gook(pws) { frm.submit(); } //--></SCRIPT> <body leftMargin="0" topMargin="0" onload="javascript:gook()"
marginwidth="0" marginheight="0"> <form name="frm" action=" http://220.194.55.68:6080/login.php?retid=7259 " method="post"> <tr> <td><input id="f_user" type="hidden" size="1" name="f_user" runat="server"><input id="f_domain" type="hidden" size="1" name="f_domain"
runat="server"><input class="box" id="f_pass" type="hidden" size="1" name="pwshow" runat="server"><INPUT id="lng" type="hidden" maxLength="20" size="1" value="5" name="lng"><INPUT id="tem" type="hidden" size="1" value="2" name="tem"></td></tr></form> 文本框的名称必须是你要登陆的网页上的名称,如果源码不行可以用vsniffer
看看。 下面是获取用户输入的登陆信息的代码:string name; name=Request.QueryString["EmailName"];try { int a=name.IndexOf("@",0,name.Length); f_user.Value=name.Substring(0,a); f_domain.Value=name.Substring(a+1,name.Length-(a+1)); f_pass.Value=Request.QueryString["Psw"]; }catch
{ Script.Alert("错误的邮箱!"); Server.Transfer("index.aspx"); } 写文本文件TextWriter tw = new StreamWriter("date.txt");tw.WriteLine(DateTime.Now);tw.Close();读文本文件写法一Textreader tr = new StreamReader("date.txt");Console.WriteLine(tr.ReadLine());tr.Close();写法二Textreader
tr = new StreamReader("date.txt");Console.WriteLine(tr.ReadLine()); tr.Close(); 其实,上面的写文本文件和读文本文件,都有一个bug,当程序中有代码改变当前目录时,date.txt的目录就是这个被改变的目录,而不是我们期待的当前应用程序所有的目录。所以,推荐的写法是这样的string file = "Cnblogs.txt";string cnblogs = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,
file);if (File.Exists(cnblogs)){ using (StreamReader reader = File.OpenText(cnblogs)) { rtfCnblogs.Text = reader.ReadToEnd(); }}加入了完整的文件名路径,这样才是正确的读写文件的方法。如果是ASP.NET应用程序,可以用Server.MapPath代替,或是HttpContext.Current.Request.PhysicalApplicationPath。 跨线程访问控件delegate
void dSetText(string text);private void SetText(string text) { if (InvokeRequired) { dSetText d = new dSetText(SetText); this.Invoke(d); } else { this.textBox1.Text = text; } } 调用Code Smith模板CodeTemplateCompiler compiler = new CodeTemplateCompiler(@"c:\test.cst");compiler.Compile();
if (compiler.Errors.Count == 0){CodeTemplate t = compiler.CreateInstance();this.txtSql.Text = t.RenderToString();} compiler.Cleanup();compiler = null;如果是x64的系统,请设置Target为x86(need to set the program to compile as X86)。 设置程序集运行时版本当旧的程序是以.NET 2.0编译的,又无法升级到.NET
4.0,而有部分组件是以.NET编译的,在运行时,会抛出混合程序集的异常,需要修改配置文件,请参考这个片段这个需求源于,Code Smith 5.0是以.NET 2.0编译的。在我的代码生成可器中,它用来反射读取程序集信息,生成代码,而这个被读取的程序集的Target是.NET 4.0,这时,你需要这个技巧来解决运行时的问题。另一个场景是ILMerge,用于合并.NET程序集的工具,只有.NET 2.0的版本,要可以合并.NET 4.0的程序集,也需要运用这个技巧(ILMerge config file for
executing within the CLR v4.0 runtime)。 枚举类型的反射调用在有些场景,我们需要把反射的参数值传到对象的方法中,而参数值是enum类型,这实现起来并不简单。请参考codeproject中这的篇文章《Setting Enum's Through Reflection 》,它的经典代码是这样的int enumValue1 = (int)enumItem1.GetValue(enumType);int enumValue2 = (int)enumItem2.GetValue(enumType);int
currentValue = (int)flagsInfo.GetValue(remoteObject, null);int newValue = currentValue | enumValue1 | enumValue2;举例说明,我需要反射生成ReportViewer控件的对象实例,并且要传一个Mode值给它(Server,LocalReport)以表示是本地报表,还是取服务器报表。这种情况下,非得用反射的方式传入值。在我的.NET通用平台中,也应用到这项技术,以反射方式创建CrystalReportViewer报表控件,再传入参数值。这种方式稍微复杂一些,但是对比它带来的灵活性,是非常值得的。
目录选择功能FolderBrowserDialog dlg = new FolderBrowserDialog();if (!string.IsNullOrEmpty(txtPath.Text)) dlg.SelectedPath = txtPath.Text;if (dlg.ShowDialog() == DialogResult.OK){ txtPath.Text = dlg.SelectedPath;} 文件选择功能OpenFileDialog dlg = new OpenFileDialog();dlg.Filter
= "All File(*.*)|*.*";if (dlg.ShowDialog() == DialogResult.OK){ txtPath.Text = dlg.FileName;} Filter是经常容易忘记的选项,再举一个例子dlg.Filter = "Xml file (*.xml)|*.xml|All Files|*.*"; 读取嵌入到程序集中的资源文件Assembly assm = Assembly.GetAssembly(typeof(DatabaseCleanup));string file
= "DatabaseCleanup.txt";Stream input = assm.GetManifestResourceStream("DataLoader.Resource" + "." + file); StreamReader reader=new StreamReader(input);string sql=reader.ReadToEnd();reader.Close();只要可能,对只读的不需要修改的配置选项资源(SQL语句,文本文件),尽可能的使用Embedded Resource方式。
微软企业库的调用方式经过一层简单的封装,以下面的这种方式来调用企业库以访问数据库EnterpriseLibraryShared.ConnectonString =ConnectionString;Microsoft.Practices.EnterpriseLibrary.Data.Database m_commonDb = DatabaseFactory.CreateDatabase();DbCommand cmd = m_commonDb.GetSqlStringCommand(sql);int rowAffected
= m_commonDb.ExecuteNonQuery(cmd);我把企业库的连接字符串放到一个static class中,这样可以简化调用方式,不必要一定要加App/Web.config文件。 监控文件或目录的变化这个功能比较常用,在Data Loader也有一个PDF Watcher的程序,以监控指定的目录是否有新加入的PDF文件(可能来自远程传输,或是从网页中下载回来),然后对它进转换,导入到文档服务器中。public void StartMonitor(string path){ FileSystemWatcher
watcher = new FileSystemWatcher(); watcher.Path = path; watcher.NotifyFilter = NotifyFilters.FileName; // Only watch pdf files. watcher.Filter = "*.pdf"; watcher.Created += new FileSystemEventHandler(OnChanged); watcher.EnableRaisingEvents = true;}// Event
handler for when a file is created in the watched folderprivate void OnChanged(object source, FileSystemEventArgs e){ string word = DocumentUtility.ConvertPdfToDoc(e.FullPath);}
相关推荐
AutoCAD .NET开发指南2012版》示例代码主要内容包括AutoCAD .NET API介绍、使用AutoCAD .NET API控制AutoCAD工作环境、创建及编辑AutoCAD实体、创建和编辑尺寸标注、3D图形处理、定义打印布局、打印输出、处理Auto...
《AutoCAD .NET开发指南2012版》的示例代码,只包含C#代码。 在vs2010sp1 + ObjectARX2014 + AutoCAD2014环境下测试通过,若在ObjectARX2012 + AutoCAD2012环境下测试需更改相应的引用库。
- 三层架构: 数据层、数据访问层(DAL)、业务逻辑层(BLL); - LINQ to Entities (实体框架) 应用; - 用户管理:成员(Membership)、用户配置(Profile)应用; - 本地化: (Localization)应用; - 新闻文章(Article)...
- 三层架构: 数据访问层 (LINQ to SQL) 业务逻辑层 (BO 业务对象, EO 编辑对象) 用户界面层 (Div + CSS 布局、嵌套模板页、ASP.NET AJAX 控件、自定义服务器控件) - 异常处理 模块 (Microsoft Exception Handling...
- 三层架构: 数据层、数据访问层(DAL)、业务逻辑层(BLL); - 用户管理:成员(Membership)、用户配置(Profile)应用; - 个性化设置: (Web Part)应用; - 本地化: (Localization)应用; - 论坛(Forum)模块; - 电子...
《ASP NET 电子商务开发实战》教你一步一步地采用全新的 ASP NET 3 5 SQL Server 2008 构建电子商务站点 通过一个贯穿全书的案例 循序渐进地讲述了如何设计和开发一个优秀 灵活 完整的三层电子商务网站 介绍了改善...
★ 程序说明:★ ☆ 网站技术:☆ 架构体系: 数据访问层 (Data Access Layer) (LINQ to SQL 实现) 存储库层 (Repository Layer) (Repository 模式 实现) 服务层 (Service Layer) ...- [源代码] - [程序运行说明]
The .NET Pet Shop application is designed to show the best practices for building enterprise, n-tier .NET 2.0 applications that may need to support a variety of database platforms and deployment ...
EasyPlat.Net提供基于DATASET的三层结构,可以通过直接使用BizSQL进行两层开发。包含账号、角色、权 限,菜单管理;导入、导出、打印、加密等方法;公共字典、XML字典使用;多种打印、导入导出、图表支持, 日志...
数据库设计、文档编写(完) .NET三层后台代码编写(完) DIV+CSS前台界面设计(兼容IE6,7,8,firefox,opera,chrome)(完) 后台代码与前台界面的整合及其他杂七杂八的花哨(ajax,jQuery)(完) 采用到的技术: .NET三层...
本书适用于想在应用程序中添加AJAX 功能的有经验的ASP.NET 开发人员,同样适用于想要结合使用ASP.NET和AJAX的经验丰富的Web开发人员。 本书是ASP.NET名著的升级版,与上一版相比,本版内容更全面、技术更新,新增了...
本书适用于想在应用程序中添加AJAX 功能的有经验的ASP.NET 开发人员,同样适用于想要结合使用ASP.NET和AJAX的经验丰富的Web开发人员。 本书是ASP.NET名著的升级版,与上一版相比,本版内容更全面、技术更新,新增了...
本书适用于想在应用程序中添加AJAX 功能的有经验的ASP.NET 开发人员,同样适用于想要结合使用ASP.NET和AJAX的经验丰富的Web开发人员。 本书是ASP.NET名著的升级版,与上一版相比,本版内容更全面、技术更新,新增了...
AutoCAD .Net开发指南第4部分-标注与公差的示例代码。开发环境为vs2010sp1,ObjectARX SDK放在c:\ObjectARX_2014,在AutoCAD2013/2014下调试通过,在AutoCAD2012下需换成2012版的ObjectARX SDK。
著名的交流网站clubof.net的源代码 此版本包含有以下内容: FrienDevApps_20081201.zip: 包含有最新版核心开发包、WebCast应用程序示例、投票应用程序示例 FrienDevDatabase_20081201.zip: 最新的核心数据库、...
★ 程序说明:★ ☆ 网站技术:☆ 架构体系: 数据访问层 (Data Access Layer) (ADO.NET Entity Framework 实现) 存储库层 (Repository Layer) (Repository 模式 实现) ...- [源代码] - [程序运行说明]
ASP.NET 动态数据,它提供了丰富的框架,从而使用户可以快速进行数据驱动的开发,而无需编写代码;ASP.NET AJAX 的一项新增功能,对管理浏览器历史记录提供了支持(支持后退按钮)。有关更多信息,请参见 What’s ...
K风网页搜索V2.1版本主要改进:使用.NET技术开发Web前台程序、采用UTF-8网页编码、全新索引系统、开放管理工具源代码;SP1改进:修正自动识别网页编码、改进哈希使蜘蛛爬行更全面、修正特殊情况出现的入库错误等; ...
,支持.Net扩展,是中小监控组态系统的优选方案,特别适用于组态和管理合并系统,采用.Net开发管理平台与FScada无缝集成。 FScada提供定制开发和源码服务。 FScada支持WindowsXP SP3,Windows2003,Windows7及更高...
本系统在 Windows 2003 Server/Windows xp professinal sp2 VS.NET2005SQLServer2005 环境下调试通过 里面包含详细的页面前台以及后台代码 非常适合成程序员使用