/*脚本说明：数据绑定实用工具*/

var CtrlType = {
    BtnSel : "按钮选择",
    LoopUp : "下拉关联列表",
    Combo : "组合框",
    TextEdit : "单个数据项编辑",
    NumEdit : "数字编辑",
    DateEdit : "时间编辑",
    TextBox : "微软编辑框",
    Label : "标签",
    CheckBox : "选择框",
    Grid : "网格",
    AKList : "自动完成选择",
    TbxBtnPopList : "列表选择",
    TbxBtnPopTree : "树状选择",
    Unknown : "未知"};

function TBinding()
{
    this.GetControlById=function(id)
    {
        var oEdit = null;
        
        var   oTemp = null;
        try
        {
            oTemp = eval(id);
        }
        catch(e)
        {
        }
        if(typeof(oTemp)!="undefined"&&oTemp!=null
            &&(oTemp.Type=="TbxBtnPopList"||oTemp.Type=="TbxBtnPopTree") ){
            oEdit=oTemp;
            return oEdit;
        }
        if(typeof(acnikObjGetCtrl)!="undefined"){
            oEdit = acnikObjGetCtrl(id);
            if(typeof(oEdit)!="undefined"&&oEdit!=null)
                return oEdit;
        }
        if(typeof(igcmbo_getComboById)!="undefined"){
            oEdit = igcmbo_getComboById(id);
            if(typeof(oEdit)!="undefined"&&oEdit!=null)
                return oEdit;
        }
        if(typeof(igtbl_getGridById)!="undefined"){
            oEdit = igtbl_getGridById(id);
            if(typeof(oEdit)!="undefined"&&oEdit!=null)
                return oEdit;
        }
        if(typeof(igedit_getById)!="undefined"){
            oEdit = igedit_getById(id);
            if(typeof(oEdit)!="undefined"&&oEdit!=null)
                return oEdit;
        }
        
        oEdit = document.getElementById(id);
        return oEdit;
    }

    this.GetCtrlType=function(oEdit)
    {
        if(oEdit==null || oEdit=="undefined")
            return CtrlType.Unknown;
        if(oEdit.Type=="TbxBtnPopList")
        {
            return CtrlType.TbxBtnPopList;
        }            
        if(oEdit.Type=="TbxBtnPopTree")
        {
            return CtrlType.TbxBtnPopTree;
        }            
        else if(typeof(oEdit.Type)!="undefined"&&oEdit.Type=="AKList")//AKList
        {
            return CtrlType.AKList;
        }
        else if(typeof(oEdit.id)!="undefined")//LoopUp,TextBox,CheckBox,Label
        {
            if(typeof(oEdit.options)!="undefined")
                return CtrlType.LoopUp;
            else if(typeof(oEdit.checked)=="boolean" && !oEdit.isTextEdit)
                return CtrlType.CheckBox;
            else if(typeof(oEdit.value)!="undefined")
                return CtrlType.TextBox;
            else if(typeof(oEdit.innerText)!="undefined")
                return CtrlType.Label;
        }
        else if(typeof(oEdit.Id)!="undefined")//Combo,Grid
        {
            if(typeof(oEdit.getDropDown)!="undefined")
                return CtrlType.Combo;
            else if(typeof(oEdit.Bands)!="undefined")
                return CtrlType.Grid;
        }
        else if(typeof(oEdit.uniqueId)!="undefined")//BtnSel,TextEdit,NumEdit
        {
            if(typeof(oEdit.getNumber)!="undefined")
                return CtrlType.NumEdit;
            else if(typeof(oEdit.getDate)!="undefined")
                return CtrlType.DateEdit;
            else if(typeof(oEdit.getText)!="undefined")
            {
                var customButton = oEdit.buttons ? oEdit.buttons[0] : null;
                if(customButton!="undefined" && customButton != null)
                    return CtrlType.BtnSel;
                return CtrlType.TextEdit;
            }
        }
        
        //alert("Unknown Control Type!");
        return CtrlType.Unknown;
    }

    /*同步指定网格行内容到数据源*/
    this.SynchronizeGridRowToDataRow=function(AUltraWebGridRow,ADataRow)
    {
        var AGrid = igtbl_getGridById(AUltraWebGridRow.gridId);
        var AGridColumnName;
	    for (var j=0;j<AGrid.Bands[0].Columns.length;j++)
	    {
	        AGridColumnName = AGrid.Bands[0].Columns[j].Key;
	        var cell=AUltraWebGridRow.getCellFromKey(AGridColumnName);
	        ADataRow[AGridColumnName] = cell.getValue();
	    }
    }

    /*同步指定单元格内容到数据源*/
    this.SyncCellToDataSource=function(CellID)
    {
        var AGridCell=igtbl_getCellById(CellID);
        var AGridRow=AGridCell.Row;
        var AGrid=igtbl_getGridById(AGridRow.gridId);
        var rowIndex = AGridRow.getIndex();
        var colName = AGridCell.Column.Key;

       AGrid.DataSource.Rows[rowIndex][colName] = AGridCell.getValue();
    }

    /*同步控件内容到数据源*/
    this.SyncCtrlToDataSource=function(oEditId)
    {
        var oEdit = this.GetControlById(oEditId);
        var ctrlType = this.GetCtrlType(oEdit);
        
        if(oEdit==null || oEdit.DataSource==null || ctrlType==CtrlType.Grid)
            return;
        if(oEditId.indexOf("InnerEditor_")==0)
        {/*网格内部控件*/
            if (oEdit.webGrid!=null)
            {
                if(oEdit.webGrid.DataSource==null)
                    return;
                var dt = oEdit.webGrid.DataSource;
                var cell = oEdit.webGrid.getActiveCell();
                var colname = cell.Column.Key;
                switch(ctrlType)
                {
                    case CtrlType.BtnSel:
                    case CtrlType.Combo:
                    case CtrlType.AKList:
                    case CtrlType.TbxBtnPopList:
                    case CtrlType.TbxBtnPopTree:
                    case CtrlType.LoopUp:/*同步TextField和ValueField*/
                        dt.Rows[cell.Row.getIndex()][colname] = this.GetCtrlText(oEditId,false);
                        var valcolname = colname.substring(0,colname.length-4)+"id";
                        dt.Rows[cell.Row.getIndex()][valcolname] = this.GetCtrlValue(oEditId,false);
                        break;
                    default:
                        dt.Rows[cell.Row.getIndex()][colname] = this.GetCtrlText(oEditId,false);
                }
             }	        
        }
        else
        {/*非网格内部控件*/
            var dt = oEdit.DataSource;    
            var prexLen = "edtx0x".length;
            var colname = oEditId.substring(prexLen,oEditId.length);/*startindex,endindex*/
            switch(ctrlType)
            {
                case CtrlType.BtnSel:
                case CtrlType.Combo:
                case CtrlType.AKList:                
                case CtrlType.TbxBtnPopList:                
                case CtrlType.TbxBtnPopTree:                
                case CtrlType.LoopUp:/*同步TextField和ValueField*/
                    dt.Rows[0][colname] = this.GetCtrlValue(oEditId,false);
                    var txtcolname = colname.substring(0,colname.length-2)+"name";
                    if(typeof(eval("dt.Rows[0]."+txtcolname))!="undefined")
                        dt.Rows[0][txtcolname] = this.GetCtrlText(oEditId,false);
                    break;
                default:
                    dt.Rows[0][colname] = this.GetCtrlText(oEditId,false);
            }
        }
    }

    this.SetCtrlText=function(oEditId,text,isCascade)
    {
        var oEdit = this.GetControlById(oEditId);
        var ctrlType = this.GetCtrlType(oEdit);
        
        if(oEdit==null || ctrlType==CtrlType.Grid)
            return;
            
        if(oEditId.indexOf("InnerEditor_")==0)
        {/*网格内部控件*/
            if (oEdit.webGrid!=null)
            {
                var cell = oEdit.webGrid.getActiveCell();
                cell.setValue(text);
                if(isCascade)
                {
                    if(oEdit.webGrid.DataSource==null)
                        return;
                    var dt = oEdit.webGrid.DataSource;
                    var colname = cell.Column.Key;
                    dt.Rows[cell.Row.getIndex()][colname]=text;
                }
            }	        
        }
        else
        {/*非网格内部控件*/
            switch(ctrlType)
            {
                case CtrlType.Combo:
                    var AGrid = oEdit.getGrid();
                    var AGridRow;                    
                    for(var i=0;i<AGrid.Rows.length;i++)
                    {
                        AGridRow = AGrid.Rows.getRow(i);
                        if(AGridRow.getCell(0).getValue()==text)
                        {
                            oEdit.setSelectedIndex(i);
                        }
                    }
		            break;
                case CtrlType.LoopUp:
	                for(var i=0;i<oEdit.options.length;i++)
	                {
		                if(oEdit.options[i].text==text)
		                {
			                oEdit.options[i].selected = true;
			                break;
		                }
	                }
		            break;
                case CtrlType.BtnSel:
                case CtrlType.TextEdit:
                    oEdit.setValue(text);
                    break;
                case CtrlType.NumEdit:
                    oEdit.setNumber(text);
                    break;
                case CtrlType.DateEdit:  
                    oEdit.setDate(text);
                    break;
                case CtrlType.Label:
                    oEdit.innerText = text;
                    break;
                case CtrlType.CheckBox:
                    oEdit.checked = text;
                    break;
                case CtrlType.AKList:
                    oEdit.SetText(text);
                    break;
                case CtrlType.TbxBtnPopList:
                    oEdit.SetText(text);
                    break;
                case CtrlType.TbxBtnPopTree:
                    oEdit.SetText(text);
                    break;
                default:
                    oEdit.value=text;
            }
            
            if(isCascade)
            {
                if(oEdit.DataSource==null)
                    return;
                var dt = oEdit.DataSource;
                var prexLen = "edtx0x".length;
                var colname = oEditId.substring(prexLen,oEditId.length);/*startindex,endindex*/
                dt.Rows[0][colname]=text;
            }
            
        }/*esle:非网格内部控件*/   
    }

    this.SetCtrlValue=function(oEditId,value,isCascade)
    {
        var oEdit = this.GetControlById(oEditId);
        var ctrlType = this.GetCtrlType(oEdit);

        if(oEdit==null || ctrlType==CtrlType.Grid)
            return;
            
        if(oEditId.indexOf("InnerEditor_")==0)
        {/*网格内部控件*/
            if (oEdit.webGrid!=null)
            {
                var cell = oEdit.webGrid.getActiveCell();
                cell.setValue(value);
                if(isCascade)
                {
                    if(oEdit.webGrid.DataSource==null)
                        return;
                    var dt = oEdit.webGrid.DataSource;
                    var colname = cell.Column.Key;
                    var valcolname = colname;            
                    if(colname.length>=5 && colname.substring(colname.length-4,colname.length).toLowerCase()=="name")
                        valcolname = colname.substring(0,colname.length-4)+"id";
                    if(typeof(eval("dt.Rows[cell.Row.getIndex()]."+valcolname))!="undefined")    
                        dt.Rows[cell.Row.getIndex()][valcolname]=value;
                    else
                        dt.Rows[cell.Row.getIndex()][colname]=value;
                }
            }	        
        }
        else
        {/*非网格内部控件*/
            switch(ctrlType)
            {
                case CtrlType.Combo:
                    var AGrid = oEdit.getGrid();
                    var AGridRow;                    
                    for(var i=0;i<AGrid.Rows.length;i++)
                    {
                        AGridRow = AGrid.Rows.getRow(i);
                        if(AGridRow.getCell(0).getValue()==value)
                        {
                            oEdit.setSelectedIndex(i);
                        }
                    }
                    break;
                case CtrlType.LoopUp:
	                for(var i=0;i<oEdit.options.length;i++)
	                {
		                if(oEdit.options[i].value==value)
		                {
			                oEdit.options[i].selected = true;
		                }
		                else
		                {
			                oEdit.options[i].selected = false;
		                }
	                }
		            break;
                case CtrlType.BtnSel:
                case CtrlType.TextEdit:
	                oEdit.setText(value);
                    break;
                case CtrlType.NumEdit:
                    oEdit.setNumber(value);
                    break;
                case CtrlType.DateEdit:  
                    oEdit.setDate(value);
                    break;
                case CtrlType.Label:
                    oEdit.innerText = value;
                    break;
                case CtrlType.CheckBox:
                    oEdit.checked = value;
                    break;
                case CtrlType.AKList:
                    oEdit.SetValue(value);
                    break;
                case CtrlType.TbxBtnPopList:
                    oEdit.SetValue(value);
                    break;
                case CtrlType.TbxBtnPopTree:
                    oEdit.SetValue(value);
                    break;
                default:
                    oEdit.value=value;
            }
            
            if(isCascade)
            {
                if(oEdit.DataSource==null)
                    return;
                var dt = oEdit.DataSource;
                var prexLen = "edtx0x".length;
                var colname = oEditId.substring(prexLen,oEditId.length);/*startindex,endindex*/
                var valcolname = colname;            
                if(colname.length>=5 && colname.substring(colname.length-4,colname.length).toLowerCase()=="name")
                    valcolname = colname.substring(0,colname.length-4)+"id";
                if(typeof(eval("dt.Rows[0]."+valcolname))!="undefined")    
                    dt.Rows[0][valcolname]=value;
                else
                    dt.Rows[0][colname]=value;
            }
            
        }/*esle:非网格内部控件*/   
    }

    this.GetCtrlText=function(oEditId,isFromDataSource)
    {
        var result;
        var oEdit = this.GetControlById(oEditId);
        var ctrlType = this.GetCtrlType(oEdit);
        
        if(oEdit==null || ctrlType==CtrlType.Grid)
            return;
        if(isFromDataSource)
        {
            if(oEdit.DataSource==null)
                return;
            var dt = oEdit.DataSource;    
            if(oEditId.indexOf("InnerEditor_")==0)
            {/*网格内部控件*/
                if (oEdit.webGrid!=null)
                {
                    var cell = oEdit.webGrid.getActiveCell();
                    var colname = cell.Column.Key;
                    result =  dt.Rows[cell.Row.getIndex()][colname];
                    if(cell.Column.DataType!=17 && cell.Column.DataType!=8)//not char,string or unrecognized
                    {
                        result = (isNaN(result) || result=="")?result:result*1 ;
                    }
                 }	        
            }
            else
            {/*非网格内部控件*/
                var prexLen = "edtx0x".length;
                var colname = oEditId.substring(prexLen,oEditId.length);/*startindex,endindex*/
                result = dt.Rows[0][colname];
                if(typeof(oEdit.getNumber)!="undefined")//numeric
                {
                    result = (isNaN(result) || result=="")?result:result*1 ;
                }
            }
        }
        else/*fi:isFromDataSource*/
        {    
            switch(ctrlType)
            {
                case CtrlType.Combo:
                    if(oEdit.getSelectedIndex()>-1)
                    {
	                    result = oEdit.getDisplayValue();
	                }
                    break;
                case CtrlType.LoopUp:/*同步TextField和ValueField*/
	                if(oEdit.selectedIndex>-1)//select
	                {
		                result = oEdit.options[oEdit.selectedIndex].text;
		            }    
	                break;
                case CtrlType.BtnSel:
                case CtrlType.TextEdit:
                    result = oEdit.getText();
                    break;
                case CtrlType.NumEdit:
                    result = oEdit.getNumber();
                    result = (isNaN(result) || result=="")?result:result*1 ;
                    break;
                case CtrlType.DateEdit:  
                    result = oEdit.getDate();
                    break;
                case CtrlType.Label:
                    result = oEdit.innerText;                    
                    break;
                case CtrlType.CheckBox:
                    result = oEdit.checked;
                    break;
                case CtrlType.AKList:
                    result = oEdit.GetText();
                    break;
                case CtrlType.TbxBtnPopList:
                    result = oEdit.GetText();
                    break;
                case CtrlType.TbxBtnPopTree:
                    result = oEdit.GetText();
                    break;
                default:
                    result = oEdit.value;
            }
        }/*esle:isFromDataSource*/
        return result ;
    }

    this.GetCtrlValue=function(oEditId,isFromDataSource)
    {
        var result;
        var oEdit = this.GetControlById(oEditId);
        var ctrlType = this.GetCtrlType(oEdit);

        if(oEdit==null || ctrlType==CtrlType.Grid)
            return;
        if(isFromDataSource)
        {
            if(oEdit.DataSource==null)
                return;
            var dt = oEdit.DataSource;    
            if(oEditId.indexOf("InnerEditor_")==0)
            {/*网格内部控件*/
                if (oEdit.webGrid!=null)
                {
                    var cell = oEdit.webGrid.getActiveCell();
                    var colname = cell.Column.Key;
                    var valcolname = colname;
                    if(colname.length>=5 && colname.substring(colname.length-4,colname.length).toLowerCase()=="name")
                        valcolname = colname.substring(0,colname.length-4)+"id";
                    if(typeof(eval("dt.Rows[cell.Row.getIndex()]."+valcolname))!="undefined")
                    {    
                        result =  dt.Rows[cell.Row.getIndex()][valcolname];
                        result = (isNaN(result) || result=="")?result:result*1 ;
                    }    
                    else
                    {
                        result =  dt.Rows[cell.Row.getIndex()][colname];
                        if(cell.Column.DataType!=17 && cell.Column.DataType!=8)//not char,string or unrecognized
                        {
                            result = (isNaN(result) || result=="")?result:result*1 ;
                        }
                    }    
                 }	        
            }
            else
            {/*非网格内部控件*/
                var prexLen = "edtx0x".length;
                var colname = oEditId.substring(prexLen,oEditId.length);/*startindex,endindex*/
                 var valcolname = colname;
                if(colname.length>=5 && colname.substring(colname.length-4,colname.length).toLowerCase()=="name")
                    valcolname = colname.substring(0,colname.length-4)+"id";
                if(typeof(eval("dt.Rows[0]."+valcolname))!="undefined")
                {    
                    result =  dt.Rows[0][valcolname];
                    result = (isNaN(result) || result=="")?result:result*1 ;
                }
                else
                {
                    result =  dt.Rows[0][colname];
                    if(typeof(oEdit.getNumber)!="undefined")//numeric
                    {
                        result = (isNaN(result) || result=="")?result:result*1 ;
                    }
                }    
            }
        }
        else/*fi:isFromDataSource*/
        {    
            switch(ctrlType)
            {
                case CtrlType.Combo:
                    if(oEdit.getSelectedIndex()>-1 && oEdit.grid.Rows.rows.length>0)
                    {
	                    //result = oEdit.getDataValue();
	                    result = oEdit.grid.Rows.rows[oEdit.getSelectedIndex()].getCell(1).getValue();
	                }
                    break;
                case CtrlType.LoopUp:/*同步TextField和ValueField*/
	                if(oEdit.selectedIndex>-1)
	                {
		                result =  oEdit.options[oEdit.selectedIndex].value;
		            }    
	                break;
                case CtrlType.BtnSel:
                case CtrlType.TextEdit:
                    result =  oEdit.getValue();
                    break;
                case CtrlType.NumEdit:
                    result = oEdit.getNumber();
                    result = (isNaN(result) || result=="")?result:result*1 ;
                    break;
                case CtrlType.DateEdit:  
                    result = oEdit.getDate();
                    break;
                case CtrlType.Label:
                    result = oEdit.innerText;
                    break;
                case CtrlType.CheckBox:
                    result = oEdit.checked;
                    break;
                case CtrlType.AKList:
                    result = oEdit.GetValue();
                    //if(!isNaN(result))
                    //    result=parseFloat(result);
                    break;
                case CtrlType.TbxBtnPopList:
                    result = oEdit.GetValue();
                    if(!isNaN(result))
                      result=parseFloat(result);
                    break;
                case CtrlType.TbxBtnPopTree:
                    result = oEdit.GetValue();
                    if(!isNaN(result))
                      result=parseFloat(result);
                    break;
                default:
                    result =  oEdit.value;
            }
        }/*esle:isFromDataSource*/
        
        return result ;
    }

    this.GetKeyWord=function(oEditId)
    {
        var result;
        var oEdit = this.GetControlById(oEditId);
        var ctrlType = this.GetCtrlType(oEdit);

        if(oEdit==null || ctrlType==CtrlType.Grid)
            return;
        switch(ctrlType)
        {
            case CtrlType.Combo:
                result = oEdit.getDisplayValue();
                break;
            case CtrlType.LoopUp:/*同步TextField和ValueField*/
                if(oEdit.selectedIndex>-1)
                {
	                result =  oEdit.options[oEdit.selectedIndex].value;
	            }    
                break;
            case CtrlType.BtnSel:
            case CtrlType.TextEdit:
                result =  oEdit.getValue();
                break;
            case CtrlType.NumEdit:
                result = oEdit.getNumber();
                result = (isNaN(result) || result=="")?result:result*1 ;
                break;
            case CtrlType.DateEdit:  
                result = oEdit.getDate();
                break;
            case CtrlType.Label:
                result = oEdit.innerText;
                break;
            case CtrlType.CheckBox:
                result = oEdit.checked;
                break;
            case CtrlType.AKList:
                result = oEdit.GetText();
                break;
            case CtrlType.TbxBtnPopList:
                result = oEdit.GetText();
                break;
            case CtrlType.TbxBtnPopTree:
                result = oEdit.GetText();
                break;
            default:
                result =  oEdit.value;
        }    
        return result ;
    }

    this.IsBlank=function(oEditId)
    {/*控件为空*/    
        var text = this.GetCtrlText(oEditId,false);
        if(text=="undefined" || text==null)
            return true;
        text = "" + text;
        if(text.isBlank())
            return true;
        return false;
    }


    this.IsNumber=function(oEditId)
    {/*控件为空*/
        var text = this.GetCtrlText(oEditId,false) + "";
        return text.isNumber();
    }

    this.CheckCode=function(oEditId)
    {/*控件*/
        var text = this.GetCtrlText(oEditId,false);
        if(text=="undefined" || text==null)
            return true;
        text = "" + text;
        
        var reg =/[a-zA-Z0-9]/;
        var istrue = reg.test(text);
        return istrue;
    }

    /*将从Ajax方法获取到的数据绑定到列表控件上去*/
    this.BindAjaxMethodToListControl=function(oEdit,fullMethodName,paramArray,strTextField,strValueField)
    {
        if(eval(fullMethodName)=="undefined")
        {
            alert("相应的数据方法没有定义");
            return;
        }
        var invokeStr = fullMethodName+"()";
        var paramStr = "";
        if(paramArray!=null)
        {
            for(var i=0;i<paramArray.length;i++)
            {
                if(paramStr=="")
                    paramStr = "paramArray[i]";
                else    
                    paramStr = ",paramArray[i]";
            }
        }
        invokeStr = invokeStr.replace("()","("+paramStr+");");
        var objDataSet = eval(invokeStr);
        this.BindDataSetToListControl(oEdit,objDataSet,strTextField,strValueField,0);
    }

    /*将以逗号隔开的选项列表绑定到列表控件上去*/
    this.BindStringToListControl=function(oEdit,strSource,bDefault)
    {
        if(typeof(oEdit.getDropDown)!="undefined")//webcombo
        {
            var AGrid = oEdit.getGrid();
            while(AGrid.Rows.length>0)
            {
                AGrid.Rows.remove(0);
            }
	        if(strSource==null)
		        return;
        	
	        var objSource = strSource.split(",");
	        var i=0;
            for(; i<objSource.length; i++)
            {
                var AGridRow = AGrid.Rows.addNew();
                AGridRow.getCell(0).setValue(objSource[i]);
                AGridRow.getCell(1).setValue(objSource[i]);
	        }
	        if(i>0 && (bDefault==true))
		        oEdit.setSelectedIndex(0)
        }
        else //select
        {
	        while(oEdit.options.length>0)
	        {
		        oEdit.options.remove(oEdit.options[0]);
	        }
	        if(strSource==null)
		        return;
        	
	        var objSource = strSource.split(",");
	        var i=0;
            for(; i<objSource.length; i++)
            {
		        oEdit.options.add(new Option(objSource[i],objSource[i]));
	        }
	        if(i>0 && (bDefault==true))
		        oEdit.selectIndex=0;
	    }
    }

    /*将数据集绑定到列表控件上去*/
    this.BindDataSetToListControl=function(oEdit,objDataSet,strTextField,strValueField,iTableIndex,bDefault,bAddBlank)
    {
        if(typeof(oEdit.getDropDown)!="undefined")//webcombo
        {
            var AGrid = oEdit.getGrid();
            while(AGrid.Rows.length>0)
            {
                AGrid.Rows.remove(0);
            }
	        if(objDataSet==null)
		        return;
	        if(iTableIndex==null)
		        iTableIndex=0;
	        if(strTextField==null)
	            strTextField="name";
	        if(strValueField==null)
	            strValueField="id";
	        var table = objDataSet.Tables[iTableIndex];
	        var i=0;
	        
            for(; i<table.Rows.length; i++)
            {
		        var Text = table.Rows[i][strTextField];
		        var Value = table.Rows[i][strValueField];
                var AGridRow = AGrid.Rows.addNew();
                AGridRow.getCell(0).setValue(Text);
                AGridRow.getCell(1).setValue(Value);
	        }
	        if(i>0 && (bDefault==true))
		        oEdit.setSelectedIndex(0)
		    if(i==0)    
	        {
	            oEdit.setValue(null);
	            oEdit.setDisplayValue("");
	        }    
        	
	        var id = this.GetControlId(oEdit);	
            if(typeof(oEdit.DataSource)!="undefined" && oEdit.DataSource!=null)
            {
                if(id.toLowerCase().indexOf("edtx0x")==0)
                {
                    var colname = id.substring("edtx0x".length,id.length).toLowerCase();
                    if(oEdit.getSelectedIndex()==-1)
                        oEdit.DataSource.Rows[0][colname]=null;
                    else
                        oEdit.DataSource.Rows[0][colname] = oEdit.getValue();
                }
            }
        }
        else //select
        {    
	        while(oEdit.options.length>0)
	        {
		        oEdit.options.remove(oEdit.options[0]);
	        }
	        if(objDataSet==null)
		        return;
	        if(iTableIndex==null)
		        iTableIndex=0;
	        if(strTextField==null)
	            strTextField="name";
	        if(strValueField==null)
	            strValueField="id";
	        var table = objDataSet.Tables[iTableIndex];
	        
	        if (bAddBlank)
	        {
		        oEdit.options.add(new Option("--请选择--","-999999"));
	        }
	        
	        var i=0;
            for(; i<table.Rows.length; i++)
            {
		        var Text = table.Rows[i][strTextField];
		        var Value = table.Rows[i][strValueField];
		        oEdit.options.add(new Option(Text,Value));
	        }
	        if(i>0 && (bDefault==true))
		        oEdit.selectedIndex=0;
        	
	        var id = oEdit.id;	
            if(typeof(oEdit.DataSource)!="undefined" && oEdit.DataSource!=null)
            {
                if(id.toLowerCase().indexOf("edtx0x")==0)
                {
                    var colname = id.substring("edtx0x".length,id.length).toLowerCase();
                    if(oEdit.selectedIndex==-1)
                        oEdit.DataSource.Rows[0][colname]=null;
                    else
                        oEdit.DataSource.Rows[0][colname] = oEdit.options[oEdit.selectedIndex].value;
                }
            }
        }
    }

    /*将数据集绑定到列表控件上去*/
    this.BindListControlDsById=function(oEditId,objDataSet,strTextField,strValueField,iTableIndex,bDefault)
    {
        var oEdit = this.GetControlById(oEditId);
        if(oEdit!=null)
        {
            this.BindDataSetToListControl(oEdit,objDataSet,strTextField,strValueField,iTableIndex,bDefault);    
	    }
    }

    /*将数据集绑定到网格中的列表控件上去*/
    this.BindGridCellDropListDSById=function(AGridCell,objDataSet,strTextField,strValueField,NullValue,iTableIndex)
    {
	    /*没有固定选项时的缺省值*/
	    if(NullValue==null)
	    {
		    if(AGridCell.Column.DataType==8)
		    {/*字符串*/
			    NullValue = "";
		    }
		    else
		    {/*数字值*/
			    NullValue = 0;
		    }
	    }
    	
        if(iTableIndex==null)
	        iTableIndex=0;
    		    
	    var defaultvalue = NullValue;
	    var result=[];	
	    var table = objDataSet.Tables[iTableIndex];
        var i=0;
        for(; i<table.Rows.length; i++)
        {
	        var Text = table.Rows[i][strTextField];
	        var Value = table.Rows[i][strValueField];
    	    
	        result.push([Text,Value]);
        }
    	    
        if (i == 0)
	    {/*加入缺省选项*/
		    result.push([NullValue,NullValue]);
	    }
    	
	    AGridCell.Column.ValueList = result;
	    AGridCell.setValue(defaultvalue);
    }


    this.GetControlId=function(oEdit)
    {
        if(oEdit==null)
            return "";
        if(oEdit.Type=="AKList"||oEdit.Type=="TbxBtnPopList"||oEdit.Type=="TbxBtnPopTree")
        {
            return oEdit.ID;
        }    
        else if(typeof(oEdit.UniqueId)!="undefined")
        {
            return oEdit.UniqueId;
        }
        else if(typeof(oEdit.uniqueId)!="undefined")
        {
            return oEdit.uniqueId;
        }
        else if(typeof(oEdit.Id)!="undefined")
            return oEdit.Id;
        else  
            return oEdit.id;  
    }

    this.DropDow=function(oEditId)
    {
        var oEdit = igcmbo_getComboById(oEditId);
        if (oEdit.selectedIndex <0)
        {
            oEdit.setDropDown(false);
        }
        else
        {
            oEdit.setDropDown(true);
        }
    }

    this.SetValueByRow=function(AGridRow,ADataRow,AKey,AValue,bDiscardMissingColumn)
    {
        var cell = AGridRow.getCellFromKey(AKey);
        if(cell!=null)
            cell.setValue(AValue);
        if(bDiscardMissingColumn)
        {
            if(ADataRow[AKey]!="undefined")
                ADataRow[AKey] = AValue;
        }
        else
        {
            ADataRow[AKey] = AValue;
        }
    }
}

var Binding=new TBinding();
