2012-02-17 4 views
0

두 개의 드롭 다운 목록 (ddl1, ddl2)과 두 개의 드롭 다운 목록 (gddl1, gddl2)이있는 gridview가 있습니다. SelectedIndexChanged에서 ddl1 이벤트가 포스트 백에서 gddl1의 SelectedIndex을 변경합니다.Dropdownlist 포스트 백에서 선택된 값

내 문제는 입니다. 버튼의 클릭 이벤트에서 ddl1.databind()가 발생합니다. 따라서 ddl1의 선택된 인덱스가 변경되면 선택한 값이 손실되고 초기 값으로 돌아갑니다.

버튼 클릭시 ddl1 바인딩이므로 !IsPostback을 사용할 수 없습니다. 선택한 색인을 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를 사용하여 값을 얻을 안내 할 수 있습니다. 그렇게에 ddl1, ddl2, gddl1하고있어, 각 이벤트가 처리 될 때 어떤 보이지 이후 내가 문제를 이해하는 경우

Request.Form[DropDownListID.UniqueID] 
0

는 잘 모르겠어요.

그러나 내 생각은 다음과 같습니다

  • 데이터 바인딩 btnProceed_Click
  • 바인딩에서의 GridView의 GridView의 두 DropDownLists 만 그런

RowDataBound에 당신 "의 GridView-DropDownLists는"항상 업이다 선택된 값에 따라 최신 값 ddl1

+0

'ddlAppraiserAll'이 (가) gridview 외부에 있습니다. 오전 바인딩에 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 선택 색인을 유지할 수 있습니다. viewstate에 속성으로 저장하여.

위의 속성은 문자열이며, 비슷한 방식으로 int 속성을 만들거나 문자열과 동일한 인덱스와 캐스트를 사용할 수 있습니다. 선택한 인덱스는 후속 포스트 백에서 유지됩니다.

관련 문제