最近手头有个简单的项目,比平时写的要简单很多,但是却很不顺利,出现了好多奇怪的问题, 比如今天就遇到一个奇怪的问题,这里我讲一下解决全过程.
客户要求,在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,保存后,发现页面正常了,下拉菜单也能选中第二项了,问题解决了,哈哈!开心!