2011-07-11 27 views
0

我有一個DDL和我的aspx頁面中的ASP .NET網格視圖。我有兩個方法getALLProgram和getProgramBy名稱,兩者都工作正常。我的問題是:當頁面加載的第一次,我想打電話給getAllprogram方法,在這之後如果用戶選擇從DDL我想叫我getprogramByname方法的程序。如何以不同的條件加載相同的ASP網格視圖?

如何在這裏是我的代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindProgramDDL(); 
      BindGrid(); 
     } 
     //BindProgramDDL(); 
    } 

    protected void BindGrid() 
    { 
     string strProgramCode = DDLProgram.SelectedIndex.ToString(); 
     List<FormGridEntity> gridEntities = new List<FormGridEntity>(); 

     GridForResult.DataSource = gridEntities; 
     GridForResult.DataBind(); 

     //throw new NotImplementedException(); 
    } 

    protected void BindProgramDDL() 
    { 
     List<CcProgramEntity> programEntities = FormSaleSubmit_BAO.GetAllPrograms(); 

     DDLProgram.DataSource = programEntities; 
     DDLProgram.DataTextField = "Shortname"; 
     DDLProgram.DataValueField = "Id"; 
     DDLProgram.DataBind(); 
     string programCode = programEntities[DDLProgram.SelectedIndex].Code; 
    } 

    protected void OnDDLProgramChanged(object sender, EventArgs e) 
    { 
     List<CcProgramEntity> programEntities = FormSaleSubmit_BAO.GetAllPrograms(); 
     string programCode = programEntities[DDLProgram.SelectedIndex].Code; 
    } 

的代碼是不完整的。我仍在努力。但我沒有得到邏輯我怎麼能做到這一點,我已經告訴過你了。我希望我明確提出我的問題,如果它令人困惑,請讓我知道我應該在這裏提供什麼。

+0

什麼是你的GridView的來源? SQLDataSource還是ObjectDataSource? –

回答

1

您應該檢查你的BindGrid如果任何程序已選擇或不併將呼叫路由按那個。例如,

protected void BindGrid() 
{ 
    ... 
    if (DDLProgram.SelectedIndex >= 0) 
    { 
     // program selected 
     var programCode = DDLProgram.SelectedValue; 
     data = GetProgramByName(programCode); 
    } 
    else 
    { 
     // get all programs 
     data = GetAllPrograms(); 
    } 

    // bind data with grid 
} 

您可以撥打page_loadBindGrid無條件地(即在背後的方案還),或調用它的DDL變化。

+0

我一直在尋找這個簡單的邏輯。有時我覺得自己很笨拙。爲什麼這個邏輯沒有出現在我的腦海裏。我之前使用過這個邏輯。反正是爲了節省我的時間。 :) – Pankouri

+0

我想我們大家都錯過了一個小竅門在這裏。如果在bindgrid()之前調用bindDDL,則所選索引永遠不會爲零。所以,這個改變也將成爲這個問題答案的一部分。感謝你們所有人。 – Pankouri

0

怎麼樣在一個下拉列表和getALLProgram在頁面加載事件的選擇的指數變化的情況下寫getProgramByname?

我希望,我是你的懷疑和上述建議並幫助什麼明確的。

0

只要改變這2個東西

protected void BindGrid() 
    { 
     List<FormGridEntity> gridEntities = (DDLProgram.SelectedIndex==-1) 
      ?FormSaleSubmit_BAO.GetAllPrograms() 
      :FormSaleSubmit_BAO.GetProgramByName(DDLProgram.SelectedValue); 

     GridForResult.DataSource = gridEntities; 
     GridForResult.DataBind(); 
    } 

    protected void OnDDLProgramChanged(object sender, EventArgs e) 
    { 
     BindGrid(); 
    } 
相關問題