2011-07-11 17 views
0

私はaspxページにDDLとASP .netグリッドビューを持っています。私はgetALLProgramとgetProgramByの2つのメソッドを持っていますが、どちらもうまくいきます。私の問題は、ページが初めてロードされたときに、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

を変更? 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

私はこの単純なロジックを探していました。時々私はダンボールのように感じる。なぜこの論理が私の心に来なかったのですか?私は以前この論理を使ってきました。とにかく私の時間を節約するためにあなたをthnak。 :) – Pankouri

+0

私たちの誰かがここで少しトリックを逃したと思います。 bindDDLがbindgrid()の前に呼び出されると、選択されたインデックスは決してゼロになりません。したがって、その変更もこの質問の答えの一部になります。あなたのすべてを愛してください。 – Pankouri

0

getProgramBynameを選択したインデックスに変更すると、ページのロードイベントでドロップダウンリストとgetALLProgramのイベントが変更されましたか?

私はあなたの疑いと上記の提案が助けてくれたことを明確にしたかったと思います。

0

だけのGridViewのあなたの源は何これらの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(); 
    } 
関連する問題