2013-05-10 110 views
0

我想要做的是獲取我的下拉列表中的一個以更改其內容,只要其中一個選定的項目在其中一個存在。我有這樣的代碼在我的aspx文件:從客戶端獲取ASP下拉列表中的ID

function ModifyDDLItems(id1, id2) 
{ 
    var ddlcontrolShown = document.getElementById(id1); 
    var ddlcontrolHidden = document.getElementById(id2); 

    if (ddlcontrolShown.options[ddlcontrolShown.selectedIndex].value == "DD1") 
    { 
     //Get number of items of hidden ddl 
     var length = ddlcontrolHidden.options.length; 

     //Clear items of shown ddl 
     ddlcontrolShown.options.length = 0; 

     //Add itmems of hidden ddl to shown ddl 
     for (i = 0; i < length; i++) 
     { 
      ddlcontrolShown.options.add 
      var newoption = document.createElement("option") 
      newoption.text = ddlcontrolHidden.options[i].text; 
      newoption.value = ddlcontrolHidden.options[i].text.value; 
     }   
    } 
} 

現在,我給它前端的ID通過這個:

protected void SetDD1ConfItems(GridViewRow gvRow, DataSet BaseConfItems) 
{ 
    DataView dvConfType = new DataView(BaseConfItems.Tables[0]); 
    DataSet dsTemp = BaseConfItems.Clone(); 

    DropDownList ddlConfType2 = (DropDownList)form1.FindControl("ddlConfType2"); 
    DropDownList ddlBA = (DropDownList)gvRow.FindControl("ddlBA"); 
    DropDownList ddlConfType = (DropDownList)gvRow.FindControl("ddlConfType"); 

    dvConfType.RowFilter = "ref_code = 'FAX' or ref_code = 'EEX' or ref_code = 'EPD'"; 

    dsTemp.Tables.Clear(); 
    dsTemp.Tables.Add(dvConfType.ToTable()); 

    ddlConfType2.DataSource = dsTemp; 
    ddlConfType2.DataBind(); 
    //ddlBA.Attributes["onchange"] = "function GetDDLD(" + ddlConfType.ClientID + ", " + ddlConfType2.ClientID + ") {ModifyDDLItems(id1, id2);}"; 
    ddlBA.Attributes.Add("onchange", "ModifyDDLItems('" + ddlConfType.ClientID + "', '" + ddlConfType2.ClientID + "')"); 
} 

當我運行它,VS不斷告訴我,ID1和ID2是這兩個都是空的,似乎這些id沒有正確傳遞給客戶端。

+0

您確定ddlConfType和ddlConfType2是您打算使用的控件嗎?在那裏放置一個斷點(SetDD1ConfItems函數)來查找它們是否是正確的控件 – Kiarash 2013-05-10 03:57:47

+0

是的Kiarash他們是我想要的。 ddlConfTYpe2保存將被複制到ddlconfType的內容。 Thx的回覆 – Nizzy 2013-05-10 05:10:01

回答

0

我覺得你的代碼錯誤,第一個錯誤,我發現一目瞭然,通過

你不能發現裏面的GridView控件使用

gvRow.FindControl("ddlBA"); 

有可能在GridView控件多行,所以您必須在每行中找到您的控件,因爲它們都將具有不同的ClientID。首先要嘗試更換下面的代碼

gvRow.Rows[RowIndex].FindControl("ControlID"); 

而且,它應該是爲了找出電網的rowIndex值寫在某種的。

請簡要描述您的確切要求。所以,我可以幫你編寫正確的代碼。

+0

嗨。我很感激幫助。爲了讓你知道,gv已經是一個gridview行。我爲它的名字表示歉意,它已經存在預先存在的代碼:( – Nizzy 2013-05-10 04:53:19