最近手頭有個簡單的項目,比平時寫的要簡單很多,但是卻很不順利,出現了好多奇怪的問題, 比如今天就遇到一個奇怪的問題,這裡我講一下解決全過程.
客戶要求,在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,儲存後,發現頁面正常了,下拉式功能表也能選中第二項了,問題解決了,哈哈!開心!