milo yu

博客园 首页 新随笔 联系 订阅 管理

前段时间看extjsasp控件,它有一个语言设置,就想着如何在程序中实现。研究了一下。有以下一些经验

 

1、开发一个PageBase类

     public class PageBase:Page

     {

     }

     把 InitializeCulture方法给override掉。

在该方法实现如下:

            base.InitializeCulture();
            if (Session["language"] != null)
            {
                Page.Culture = Session["language"].ToString();
                Page.UICulture = Session["language"].ToString();
            }

2、创建一个页面,并继承PageBase

在该页面上添加一个DropDownList控件,并设置选项

 <asp:DropDownList ID="ddlLanguages" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlLanguages_SelectedIndexChanged">
                                    <asp:ListItem Value="Auto" Text="请选择语言"></asp:ListItem>
                                    <asp:ListItem Value="en-us" Text="英语"></asp:ListItem>
                                    <asp:ListItem Value="zh-cn" Text="简体中文"></asp:ListItem>
                                </asp:DropDownList>

注意:要设置AutoPostBack为true

3、编写事件代码

         Session["language"] = ddlLanguages.SelectedValue;
        //重定向,因为,InitializeCulture方法比DropDownList的事件先完成,也就是如果不重定向,所选语言显示的是上一次Session中的值。
        Response.Redirect(Request.Url.AbsolutePath);
4、编写该页面的Page_Load事件

     if(!IsPostBack)

     {

           if (Session["language"] != null)
            {

                 //有个redirect,设置一下所选项。
                 ddlLanguages.SelectedValue= Session["language"].ToString();
            }

     }

 

posted on 2010-03-05 17:50  milo yu  阅读(301)  评论(0编辑  收藏  举报