您的位置:首页 > 编程语言 > ASP

在使用Asp.net制作网站的时候遇到的问题(一)

2006-12-27 16:07 661 查看
1.问题:StreamReader中ReadLine()方法不能读取汉字

解决办法:StreamReader Reader=new StreamReader(sFileName,System.Text.Encoding.Default);

2.问题:如何在Asp.Net中使用相对路径

解决:使用Server.MapPath("相对路径名")来作为路径

3.问题:<%# %>语法绑定的数据只有在DataBind()方法以后才会被求值,而<%= %>语法会在运行到该位置然后被求职。如果使用<%# %>语法绑定数据不在正确位置显示,则需检查DataBind()是否被调用

4.问题:动态生成控件LinkButton的数组,Click事件由MapMenuItem_Click方法实现,MapMenuItem_Click方法内容如下:

protected void MapMenuItem_Click(object sender, EventArgs e)
{
LinkButton ItemLink=(LinkButton)sender;
ItemPerPage = 5;
sType="'"+ItemLink.Text+"'";
Session["ItemPerPage"] = ItemPerPage;
Session["Type"] = sType;
}
Session的内容由一个用户控件使用,用户控件直接拖入窗口~~我希望单击LinkButton后运行如下过程:MapMenuItem_Click设置Session->回发页面并加载用户控件->用户控件的Load运行并读取Session数据->用户控件显示内容
但是实际上点击LinkButton后运行如下过程:回发页面并加载用户控件->用户控件的Load运行并读取Session数据->用户控件显示内容->MapMenuItem_Click设置Session这样就导致了点击LinkButton按键后用户控件内容没有及时更新,在下一次页面刷新后才能看到上一次更新的内容~~~请问我想要的处理过程可能实现吗?如果不能实现请问如何在点击按钮后刷新页面?
解决:1.PageLoad中动态加载控件,并在MapMenuItem_Click中重新new一下这个用户控件即可。
2.在MapMenuItem_Click中写入Response.Redirect("Template_Second.aspx"),这样虽然可以实现但是由于重新创建了页面,增加了负荷,浪费了资源降低了效率。

5.问题:构造函数中使用页面控件时报告错误而在Page_Load使用就正常。
解决:这是因为页面上的控件在Page_Load以前没有加载,因此不能再Page_Load以前使用,最好的办法是尽量做到控件调用与控件所用到的数据分离,这样就可以用户在构造函数中初始化控件数据, 在Page_Load中根据数据调用控件方法,间接实现控件在构造函数中初始化

6.问题: 建立了一个根据数据库生成卡片的DataList模板,DataList内有一个ImageButton,该控件的ImageUrl始终指向同一个图片(查看.jpg),模板中的其他控件绑定数据源。请问如何区分由该模版产生的卡片中的控件?比如我点击某一个卡片中的"查看"按钮(ImageButton),如何判断该 按钮属于第几个卡片?
解决: (1)int intRowIndex=0;
public int RowIndex()
{
return intRowIndex++;
} //****在前台调用 <inpt id="ID" type="hidden" value='<%=RowIndex()%>' runat="server"/>
(2)上面前后台配合的方法虽然可以实现,但是比较繁琐,其实可以在ItemDataBound事件中实现, ItemDataBound事件在数据项绑定时实现,每根据模版和数据源生成一个项则被触发一次,这样声明一个private int intRowIndex=0,然后在ItemDataBound事件处理函数中让这个变量增1 并赋值给DataList内部控件的CommandName中,然后双击处在编辑状态的DataList中的控件生 成单击事件,在该事件处理函数中判断CommandName中的内容然实现控件的判别。

7.问题:ValidationEventArgs类在那里。
解决:System.Xml.Schema

8.问题:在使用ASP.NET为Text字段写入数据的时候,由于在建立数据结构时候系统自动规定长度为16的误导,导致在写程序时写成sqlParam = new SqlParameter("@Introduct", SqlDbType.Text, 16);这样程序只能写入16个字符 解决:text字段的长度在建立数据库结构时给出的是底线,数据库管理系统会根据查询程序而改变text长度,因此为了显示所有程序需要写成:sqlParam = new SqlParameter("@Introduct", SqlDbType.Text, YourString.Lenght);
9.问题:string类中对象的Replace方法的用法 。
解决:string sTest="wuchunlei" sTest=sTest.Replace("ch","ab");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐