版本   Ext JS Library 3.0.0

正文   一、 " /> 啪啪漫画无遮挡全彩h同人,CHINA中国东北GURMA,久久综合伊人

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ExtJS 設(shè)置級(jí)聯(lián)菜單的默認(rèn)值

前言
   ExtJS在修改這樣的頁面上賦值是很方便的,在正文中1.2.1代碼中可以看出,一行代碼就可以搞定,但這是對(duì)于普通控件而言,如文本框。對(duì)于ComboBox可沒這么簡(jiǎn)單...

版本
  Ext JS Library 3.0.0

正文
  一、問題
    1.1  截圖
      
    1.2  代碼
      1.2.1  前端代碼
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
//
function ExtStore(url)
{
return new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: url
}),
reader: new Ext.data.JsonReader({
totalProperty: 'count',
root: 'result'
},
[
{ name: 'Id' },
{ name: 'Name' }
])
});
}

Ext.onReady(function() {
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';

var store1 = ExtStore('combox.ASPx?method=GetProvinces');
var store2 = ExtStore('combox.ASPx?method=GetCitys');

var combo2 = ComboBox('combo2','二級(jí)菜單',store2);
var combo1 = new Ext.form.ComboBox({
mode: 'remote',
fieldLabel:'一級(jí)菜單',
name:'combo1',
editable : false,
typeAhead: true,
triggerAction: 'all',
displayField:'Name',
valueField:'Id',
selectOnFocus:true,
store:store1,
listeners: {
'select': function(combo, record){
var id = record.get('Id');
if(id)
{
//清空二級(jí)菜單選項(xiàng)
combo2.setRawValue('');
store2.proxy = new Ext.data.HttpProxy({
url:String.format('combox.ASPx?method=GetCitys&Province={0}',id)
});
store2.load();
}
}
}
});

var form1 = new Ext.FormPanel({
layout: 'form',
autoHeight: true,
frame: true,
renderTo: Ext.getBody(),
title: '<center style="curor:hand" onclick="window.location.reload();">表單控件</center>',
style: 'margin-left:auto;margin-right:auto;width:500px;margin-top:8px;',
//設(shè)置標(biāo)簽對(duì)齊方式
labelAlign: 'right',
//設(shè)置標(biāo)簽寬
labelWidth: 170,
//設(shè)置按鈕的對(duì)齊方式
buttonAlign:'center',
//默認(rèn)元素屬性設(shè)置
defaults:{ width:180 },
items: [
combo1,
combo2
]
});

//加載數(shù)據(jù)
Ext.Ajax.request({
url: 'combox.ASPx?method=Detail',
method: 'GET',
callback: function (options, success, response) {
if(success && response.status == 200){
//將值批量賦值
form1.form.setValues(Ext.util.JSON.decode(response.responseText))
}
}
});
});
</script>

      1.2.2  后臺(tái)代碼
復(fù)制代碼 代碼如下:
static IList<Combox> Provinces = new List<Combox>();
static IDictionary<int, Combox> Citys = new Dictionary<int, Combox>();

static combox()
{
Provinces.Add(new Combox() { Id = 1, Name = "湖南省" });
Provinces.Add(new Combox() { Id = 2, Name = "廣東省" });

Citys.Add(1, new Combox()
{
Id = 1,
Name = "長(zhǎng)沙市"
});

Citys.Add(2, new Combox()
{
Id = 1,
Name = "岳陽市"
});

Citys.Add(3, new Combox()
{
Id = 2,
Name = "深圳市"
});

Citys.Add(4, new Combox()
{
Id = 2,
Name = "珠海市"
});
}

protected void Page_Load(object sender, EventArgs e)
{

}

/// <summary>
/// 獲取所有省份數(shù)據(jù)
/// </summary>
/// <returns></returns>
public void GetProvinces()
{
Response.Write(new StringBuilder().Append("{count:")
.Append(Provinces.Count)
.Append(",result:")
.Append(JavaScriptConvert.SerializeObject(Provinces))
.Append('}')
.ToString());
}

/// <summary>
/// 獲取省下面的市區(qū)數(shù)據(jù)
/// </summary>
/// <returns></returns>
public void GetCitys()
{
IList<Combox> result = new List<Combox>();
int Province = Convert.ToInt32(Request.QueryString["Province"]);
foreach (KeyValuePair<int, Combox> data in Citys)
{
if (data.Value.Id == Province)
result.Add(new Combox() { Id = data.Key, Name = data.Value.Name });

}
Response.Write(new StringBuilder().Append("{count:")
.Append(result.Count)
.Append(",result:")
.Append(JavaScriptConvert.SerializeObject(result))
.Append('}')
.ToString());
}

public override string Detail()
{
IDictionary<string, int> result = new Dictionary<string, int>();
result.Add("combo1", 2);
result.Add("combo2", 2);
return JavaScriptConvert.SerializeObject(result);
}

class Combox
{
public int Id { get; set; }
public string Name { get; set; }
}

1.3  代碼說明
      1.3.1  后臺(tái)代碼中使用的數(shù)據(jù)僅用測(cè)試用
      1.3.2  意圖:加載的時(shí)候就默認(rèn)選擇廣東省――珠海市

  二、問題分析

    ComboBox延遲加載導(dǎo)致。

  三、解決辦法
    2.1  讓ComboBox賦值后顯示對(duì)應(yīng)的Name,而不是Id
      在Ext.Ajax.request執(zhí)行前加一句“store1.load();”即可。
      
    2.2  ComboBox級(jí)聯(lián)賦值
      級(jí)聯(lián)賦值可沒這么簡(jiǎn)單了,需要手動(dòng)觸發(fā)事件,這里嘗試了很長(zhǎng)時(shí)間才出結(jié)果。
      2.2.1  第一步,手動(dòng)觸發(fā)一級(jí)菜單選擇事件
復(fù)制代碼 代碼如下:
store1.load();
//加載數(shù)據(jù)
Ext.Ajax.request({
url: 'combox.ASPx?method=Detail',
method: 'GET',
callback: function (options, success, response) {
if(success && response.status == 200){
//將值批量賦值
form1.form.setValues(Ext.util.JSON.decode(response.responseText))
var comboValue1 = combo1.getValue();
var selectRecord;
store1.each(function(record){
if(record.data.Id == comboValue1)
selectRecord = record;
});
combo1.fireEvent('select',combo1,selectRecord);
}
}
});

        這里發(fā)現(xiàn)手動(dòng)觸發(fā)得自己傳入record的參數(shù),不然里面去不到值。
      2.2.2  修改級(jí)聯(lián)
復(fù)制代碼 代碼如下:
store2.load({
callback :function(r,options,success){
if(success){
if(IsLoad)
{
combo2.setValue(comboValue2);
IsLoad = false;
}
}
}
});

        代碼說明:
          a).  IsLoad是全局變量,用來控制僅設(shè)置一次默認(rèn)值
          b).  很容易又會(huì)犯觸發(fā)菜單一就直接給菜單二賦值的錯(cuò),注意這里因?yàn)椴藛味€沒有加載完,所有如果直接在觸發(fā)事件后面寫賦值,出來仍然是數(shù)字。

  四、代碼下載
/201006/yuanma/combox2010-6-12.rar
結(jié)束

  注意代碼中的如PageBase、 ComboBox('combo2','二 級(jí)菜單',store2)之類的代碼可以在我以前的文章里面找得到說明。遇到問題除了抱怨還可以選擇消滅,那種解決后的快感是非常深刻的,這個(gè)問題很早就解決了,一直沒時(shí)間寫,現(xiàn)在仍然記得清晰 :)


JavaScript技術(shù)ExtJS 設(shè)置級(jí)聯(lián)菜單的默認(rèn)值,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 娇妻归来在线观看免费完整版电影 | 精品国产在线亚洲欧美 | 韩国女主播内部vip自带氏巾 | 大陆老熟女60岁 | 717影院理论午夜伦不卡久久 | av淘宝 在线观看 | 久久国语露脸精品国产 | 午夜国产精品免费观看 | 扒开 浓密 毛 | 男人扒开添女人下部口述 | 叔叔 电影完整版免费观看韩国 | 国内极度色诱视频网站 | 3d无遮挡h肉动漫在线播放 | 国产成人亚洲精品午夜国产馆 | 成人特级毛片 | 好好的曰com久久 | 午夜阳光影院在线观看视频 | 啊轻点啊再深点视频免费 | 伊人久久综合谁合综合久久 | 美国色情三级欧美三级纸匠情挑 | 伊人久久大香线蕉综合网站 | vr亚洲成年网址在线观看 | 欲奴第一季在线观看全集 | 性欧美video另类hd高清 | 亚洲国产精麻豆 | 么么哒日本影院 | 亚洲专区区免费 | 成年人视频在线观看免费 | 在线视频 中文字幕 | 荷兰少归BVBV | 海角社区在线视频播放观看 | 不戴套挺进人妻怀孕 | 伊人久久大香线蕉avapp下载 | 在线免费观看毛片网站 | 国产一区二区无码蜜芽精品 | 午夜免费国产体验区免费的 | 99re精品视频在线播放视频 | 国产学生无码中文视频一区 | 乱码午夜-极品国产内射 | 免费国产成人 | 国产日韩亚洲专区无码 |