2012-02-17 27 views
0

2つのドロップダウンリスト(ddl1、ddl2)と2つのドロップダウンリスト(gddl1、gddl2)を持つグリッドビューがあります。 SelectedIndexChangedのイベントでddl1のイベントがポストバックでgddl1のSelectedIndexを変更しています。ドロップダウンリストポストバックで選択した値

私の問題は です。ボタンのクリックイベントでddl1.databind()が発生します。したがって、ddl1の選択されたインデックスが変更されると、選択された値が失われ、初期値に戻ります。

!IsPostbackボタンをクリックするとddl1をバインドしています。 ddl1とddl2の選択インデックスを保持するにはどうすればよいですか?

protected void btnProceed_Click(object sender, EventArgs e) 
{ 
    if(ddlLocation.SelectedIndex > -1) { 
     empDS = ws_service.GetEmpList(ddlLocation.SelectedValue, ((ddlDept.SelectedValue == "All") ? "" : ddlDept.SelectedValue), ((ddlGrade.SelectedValue == "All") ? "" : ddlGrade.SelectedValue)); 
     appraiserDS = ws_service.GetAppList(); 
     grdDetails.DataSource = empDS.Tables[ 0 ].DefaultView; 
     grdDetails.DataBind(); 

     ddlAppraiserAll.DataSource = appraiserDS.Tables[ 0 ].DefaultView; 
     ddlAppraiserAll.DataTextField = "APPRAISER_NAME"; 
     ddlAppraiserAll.DataValueField = "APPRAISER_ID"; 
     ddlAppraiserAll.DataBind(); 
    } 
} 


protected void ddlAppraiserAll_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach(GridViewRow gvRow in grdDetails.Rows) { 
     Control ctrl = gvRow.FindControl("ddlAppraiserId"); 
     DropDownList ddl = ctrl as DropDownList; 
     if(ddl != null) 
      ddl.SelectedIndex = ddlAppraiserAll.SelectedIndex; 
    } 
} 
+0

あなたのコードを教えてください。 –

+0

自分のコードを更新しました。 – itzArun

+0

@ itzArun:非同期ポストバックでアップデートパネルを使用しようとします – Rocky

答えて

1

ここでの問題は同期であり、そのあなたがそれを取得し、あなたがそれを結合するが、どこにもRequest.Formを使用して値を取得する指示することができます。

Request.Form[DropDownListID.UniqueID] 
0

私はそれがddl1だものを見ることは困難なので、私はあなたの問題を理解している場合はわからないddl2gddl1というように、各イベントが処理されるとき。

しかし、私の推測では、次のとおりです。

  • のDataBind btnProceed_Click
  • バインドであなたのGridViewのGridViewの2 DropDownListsのみその後

RowDataBoundでは、あなたの "GridViewの-DropDownListsは" 常にアップしています選択した値に応じて最新のddl1

+0

'ddlAppraiserAll'はgridviewの外にあります。 Amはそれを 'btnProceed_Click'にバインドし、またGridview' grdDetails'をバインドします。 Gridviewには2つのドロップダウンリスト( 'ddlAppraiserId、ddlReviewerId')があります。これらのドロップダウンリストを 'RowDataBound'イベントにバインドします。 'ddlAppraiserAll'を変更して、gridviewのドロップダウン' ddlAppraiserId'のselectedindexを変更したいと思います。 'ddlAppraiserId'の選択された値は正しく更新されていますが、' ddlAppraiserAll'の 'SelectedIndex'はポストバック後も保持されません。 – itzArun

+0

@itzArun:私たちは交差の目的で話しています。あなたが正しく理解していれば、 'ddlAppraiserAll'のSelectedValueに従って' ddlAppraiserId'を設定する必要がありますか?次に、私のアドバイスは、 'ddlAppraiserId'をバインドしてRowDataBoundでこれを考慮に入れることでした。 'ddlAppraiserAll'のSelectedIndexが変更された後にGridViewがバインドされると、' ddlAppraiserId'は自動的に正しい項目を持ちます。 **最後に**:ポストバックでもpage_loadにddlAppraiserAllをバインドしていますか? 'btnProceed_Click'に' if(!IsPostBack) '**と**だけをバインドしてください。それはその価値を保持します。 –

0

ddl1とddl2の選択インデックスを保持することができますビューステートにそれらをプロパティとして格納します。

上記のプロパティは文字列であるため、同様の方法でintプロパティを作成するか、文字列と同じインデックスを使用することができます。選択したインデックスは、その後のポストバック時に保持されます。

関連する問題