最近手头有个简单的项目,比平时写的要简单很多,但是却很不顺利,出现了好多奇怪的问题, 比如今天就遇到一个奇怪的问题,这里我讲一下解决全过程.
客户要求,在dropdownlist中选择第二项时,有一个textbox要不可用,本来这种问题是很简单的,将dropdownlist的autopostback属性设置为”true”,然后在dropdownlist的selectedindexchanged事件里写一下代码:
if(ddlframe.selectedindex == 0) //如果选中的是第一项
{
txtframeid.enabled = true;
}
else
{
txtframeid.text = “”;
txtframeid.enabled = false;
}
如果是平时,这样子就解决问题了,可是今天就出现奇怪的问题,无论我怎么选择dropdownlist,它都在刷新后选中第一项,怎么也选不中第二项,我一开始以为是dropdownlist的enableviewstate属性被我设成false了,结果发现该属性值为true,这就奇怪了,怎么会选不中第二项呢?
于是我把以前写的正常页面用记事本打开,来对比一下两个页面有什么区别,发现了有问题的页面顶部有一句话可疑:
<%@ page language=”c#” codebehind=”bookinfo.aspx.cs” autoeventwireup=”false” inherits=”webs.bookinfo” codepage=”936″%>
大家一定发现了,在最后有一句:codepage=”936″,这是什么东西?查了一下资料,找到了这个结论:
<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>utf-8
原来codepage=”936″表示的是简体中文,于是我将它删除,发现dropdownlist就能选中第二项了,,可是新问题又出来了:css好像失效了,页面变得很乱.于是我切换到vs2003,在页面属性中,将页面的字符集设置为gb2312,保存后发现页面又正常了,然后那个下拉菜单又怎么选都停在第一项上,我突然想起来,web.config文件里也有个语言设置的,于是我将
<globalization
requestencoding=”gb2312″
responseencoding=”gb2312″
/>
这两个都设置成了gb2312,保存后,发现页面正常了,下拉菜单也能选中第二项了,问题解决了,哈哈!开心!
