2013-05-29 3 views
1

formview의 편집 페이지에서 이미 생성 한 드롭 다운 목록을 현재 사용자의 SQL 데이터베이스에서 이전에 선택한 값으로 시작하려고합니다. SLN는 드롭 다운리스트의 각 항목에 대한 고유 한 값이며, PN이 드롭 다운리스트의 각 항목에 대한 배경 정보입니다드롭 다운 목록의 초기 값 선택

protected void ddlSelect_Init(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ReinstatementCS"].ConnectionString); 
    SqlCommand myCommand = new SqlCommand("SELECT Prefix, Number, ClassSection, Location, StartTime, EndTime, ClassDay, Prefix + Number + ', Section: ' + CAST(ClassSection AS VarChar) + ', Location: ' + Location + ', Start Time: ' + StartTime + ', End Time: ' + EndTime + ', Days: ' + ClassDay + ', Credits: ' + CAST(ClassCredit AS VarChar) AS PN, Capacity, GPAReqAbove1, GPAReqBelow1, CreditReqAbove30, CreditReqBelow30, ClassCredit, IsTransfer, SLN FROM Classes"); 
    myCommand.Connection = con; 
    SqlDataAdapter da = new SqlDataAdapter(myCommand); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 

    DropDownList ddlSelect = FVStudentClass.FindControl("ddlSelect") as DropDownList; 
    ddlSelect.DataSource = dt; 
    ddlSelect.DataTextField = "PN"; 
    ddlSelect.DataValueField = "SLN"; 
    ddlSelect.DataBind(); 

    con.Close(); 
} 

:

지금까지 내가 제대로 작동 드롭 다운 목록을 채울 수있는 코드를 . 특정 사용자가 이미 데이터베이스에 저장 한 내용과 일치하는 PN이 강조 표시된 항목을 원합니다.

protected void FVStudentClass_ModeChanging(object sender, FormViewCommandEventArgs e) 
    { 
     if (FVStudentClass.CurrentMode != FormViewMode.Edit) 
      return; 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ReinstatementCS"].ConnectionString); 
     SqlCommand myCommand = new SqlCommand("SELECT Prefix + Number + ', Section: ' + CAST(ClassSection AS VarChar) + ', Location: ' + Location + ', Start Time: ' + StartTime + ', End Time: ' + EndTime + ', Days: ' + ClassDay + ', Credits: ' + CAST(ClassCredit AS VarChar) AS PN, SLN FROM Classes JOIN StudentClass on SLN = SCClass WHERE SCWSUID = " + Request.QueryString["ALWSUID"]); 
     myCommand.Connection = con; 
     SqlDataAdapter da = new SqlDataAdapter(myCommand); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     DropDownList ddlSelect = new DropDownList(); 
     ddlSelect = FVStudentClass.FindControl("ddlSelect") as DropDownList; 
     if (ddlSelect != null) 
     { 
      ddlSelect.DataSource = dt; 
      ddlSelect.Items.FindByText(dt.Rows[0]["PN"].ToString()).Selected = true; 
     } 
     con.Close(); 
    } 

하지만 저장된 값을 선택하고 함께 드롭 다운리스트가 밖으로 시작하지 않기 때문에 나는 아직도 붙어 : 문제는 그 때 그 값은 내가 사용하고 선택하는 것입니다. 이 문제를 해결하는 방법을 알고 있습니까? 잘못된 명령을 사용하고 있습니까 (ModeChanging 외에도 다른 것을 사용해야합니까?)? 감사합니다. 모드가 실제로 변경되기 전에 FormView DataBound 이벤트에 DropDownList 항목을 선택하는 로직을 구현

+0

코드를 디버그 할 수 있습니까? 이전에 저장된 값을 선택한 후에'ddlSeelct.SelectedValue'는 무엇입니까? –

+0

그래서 방금 디버깅을했고 드롭 다운 목록에서 올바른 인덱스를 선택하는 것처럼 보이지만 너무 늦을 때까지 FVStudentClass_ModeChanging을 실행하지 않습니다. 수정 모드가 처음 나타날 때 실행하는 대신 편집 모드에서 업데이트 버튼을 누르면 코드가 실행됩니다. 어떤 생각을 어떻게 고쳐야합니까? – Austin

답변

2

시도는 ModeChanging 이벤트가 발생합니다.

+0

완벽한! 그것은 그것을 고쳤다! – Austin

0

ddlSelect.SelectedValue를 드롭 다운에서 선택할 값으로 설정할 수 있습니다.

ddlSelect.SelectedValue = dt.Rows[0]["PN"].ToString();