几个常碰到.NET问题的解决!

yaoyouyou 2004-12-06 02:53:12
.NET中的字符串截取
中英文的混合截取(一个中文等价于2个英文字符)
/// <summary>
/// 字符串截取
/// </summary>
/// <param name="strSource">原始字符串</param>
/// <param name="iMaxCount">截取后的最大字符长度</param>
/// <returns>字符串</returns>
private string GetTrimString(string strSource,int iMaxCount)
{
char[] c;
byte[] b;
string result;
c=strSource.ToCharArray();
b=System.Text.Encoding.Default.GetBytes(c);
if(System.Text.Encoding.Default.GetByteCount(strSource) < iMaxCount)
result=System.Text.Encoding.Default.GetString(b);
else
result=System.Text.Encoding.Default.GetString(b,0,iMaxCount);
return result;
}
javascript客户端规定最多输入的字符串长度
<script language="javascript">
<!--
function textCounter(field,maxlimit)
{
var str="";
str=field.value;
str=str.replace(/[^\x00-\xff]/g,"**");

if (str.length > maxlimit)
{
// field.value = field.value.substring(0, maxlimit);
field.value=getByteOfNum(field.value,maxlimit);
}
}
function getByteOfNum(val, num)
{
var ch,bytenum=0;
var rs = "";
var pt = /[^\x00-\xff]/;
for (var i=0; i < num; i++)
{
ch = val.substr(i, 1);
if (ch.match(pt))
{
bytenum += 2;
if (bytenum > num)
{
return rs;
}
}else
{
bytenum += 1;
}
rs += ch;
if (bytenum == num)
{
return rs;
}
}
return rs;
}

//-->
</script>
aspx中调用的代码:
<asp:textbox id="txtAttendOuter" runat="server" onkeydown="textCounter(this.form.txtAttendOuter,100);"
onkeyup="textCounter(this.form.txtAttendOuter,100);" Width="145px"></asp:textbox>

服务器端调用javascript方法
一般的写法:Response.Write(“<script language=’javascript’>alert(‘alert message!’);</script>”);
自然而然的写法:Response.Write(“<script language=’javascript’>alert(document.all(‘TextBox1’).value);</script>”);
但是这样写是错误的,因为这种写法生成的htm文档的开头为:<script language=’javascript’>alert(document.all(‘TextBox1’).value);</script>,由于这句话是第一句,而此时TextBox1对应的元素并没有形成,所以会出现错误。
正确的写法:Page.RegisterStartupScript("ShowValue","<script language='javascript'> alert(document.all(‘TextBox1’).value);</script>");能够在加载完所有的元素后才执行

制作弹出式的窗口(像MSN)
<SCRIPT LANGUAGE="JavaScript">
<!--
var oPopup = window.createPopup();
var oPopupBody = oPopup.document.body;
oPopupBody.style.backgroundColor = "magenta";
oPopupBody.style.border = "solid blue 3px";
oPopupBody.innerHTML = "Click outside <B>popup</B> to close.";
oPopup.show(100, 10, 10, 10, document.body);
//左,上,宽,高
// -->
</SCRIPT>

屏蔽鼠标经过图片时候产生的菜单
<META HTTP-EQUIV= "imagetoolbar " CONTENT= "no " >

重新调整窗口的大小位置
window.resizeBy(x,y);//在原来的基础上动态增加指定的宽度和高度
function ResizeWindow() { window.resizeTo(300,300); alert('resizedTo completed'); window.moveBy(100,100); alert('moveBy completed'); window.moveTo(200,200); alert('moveTo completed'); }

放大缩小整个网页
javascript函数
<script language="JavaScript" type="text/javascript">
<!--
// Hide from older browsers
// zoom in/out
function zoomin(){
if(document.getElementById('Zoom').style.zoom!=0)
document.getElementById('Zoom').style.zoom*=1.2;
else
document.getElementById('Zoom').style.zoom=1.2;
}
function zoomout(){
if(document.getElementById('Zoom').style.zoom!=0)
document.getElementById('Zoom').style.zoom*=0.833;
else
document.getElementById('Zoom').style.zoom=0.833;
}
function zoomrest(){
if(document.getElementById('Zoom').style.zoom!=0)
document.getElementById('Zoom').style.zoom*=0;
else
document.getElementById('Zoom').style.zoom=0;
}
// -->
</script>
页面设置
<body ID="Zoom">
然后放几个按钮就可以发达缩小了

强制控制字符换行
<asp:label id="lblContent" runat="server" style="TABLE-LAYOUT:fixed;WORD-BREAK:break-all"></asp:label>

在web服务里传递 PostedFile保存到数据库里
HttpPostedFile UpFile = UP_FILE.PostedFile;
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
Stream StreamObject = UpFile.InputStream; //建立数据流对像
//读取文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength);
//建立数据的文档数据
SqlParameter imageParameter = new System.Data.SqlClient.SqlParameter("@Data", SqlDbType.Image );
imageParameter.Value = FileByteArray;
//上传文件

在DataGrid中确定当前行的所有字段都已经绑定完成了

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.SelectedItem)
{
…………………………….
}

网页中使用Office的Web图表组件
chartString.Append("<OBJECT id=\"msodsc\" border=\"0\" classid=\"CLSID:0002E530-0000-0000-C000-000000000046\" viewastext></OBJECT>");
chartString.Append("<OBJECT id=\"ChartSpace\" title=\"Traffic Chart\" width=\"100%\" border=\"0\" classid=\"clsid:0002E500-0000-0000-C000-000000000046\" codebase=\"/Office/MSOWC.DLL\" viewastext></object>");

在Oracle中使用大对象数据类型Clob
程序中的写法:ocomm.Parameters.Add(new OracleParameter("pContent",OracleType.Clob));
Oracle数据库中的字段类型为:Clob,注意:在OEM中查看的时候是看不到Clob字段的
存储过程的写法:输入参数为:pContent in clob
Sql语句写法:和其他一样
使用到的函数:to_char(lContent)---〉转换为字符串

在vb6中调用web服务
Private oSoap As New SoapClient30 'web服务对象
oSoap.ClientProperty("ServerHTTPRequest") = True
Call oSoap.MSSoapInit("http://" & s_WebServer & "/service/FileOperation/upload.asmx?WSDL")
调用的时候只要在服务对象后面跟对应的方法就可以了,如:
Dim I as integer
I=oSoap.Calc(100,200) ‘其中Calc是web服务的函数名称
当然,在调用web服务的时候,一定要在编写web服务的时候注意到为了使vb6能够调用,一定要使用vb6支持的返回、输入类型
最后,最终要的是要先安装软件:Soap3 SDK,而且在项目中引用对应的Soap Type3

多项目之间共享 Session
首先多个项目中必须有一个项目是其他几个项目的上级目录(虚拟目录 或者 网站);
接着在所有的子项目文件夹的web.config中,删除两个节点:authentication和sessionState;
然后是把所有子项目在IIS中取消虚拟目录的属性(变为普通文件夹)
然后在上级项目中引用项目(所有要共享Session的项目)
好了

DataGrid导出Excel(不再服务器上保存,只是在客户端)
函数:
///
///ctl为要导出的DataGrid
///dt为对应的数据源
///
public void DataGridToExcel(System.Web.UI.WebControls.DataGrid ctl,DataTable dt)
{
DataView oView=new DataView(dt);
ctl.DataSource=oView;
ctl.DataBind();
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
Page.EnableViewState= false;
System.IO.StringWriter tw=new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw=new HtmlTextWriter(tw);
ctl.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
...全文
99 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧