2013-05-29 57 views
1

我想讓我已經在formview的編輯頁面內創建的下拉列表從當前用戶從sql數據庫中選擇的值開始。選擇一個下拉列表的初始值

到目前爲止我的代碼來填充下拉列表中正常工作:

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(); 
} 

其中SLN是在下拉列表每個項目的獨特價值和PN是在下拉列表每個項目的背景信息。我希望突出顯示的項目是與該特定用戶已存儲在數據庫中的內容相對應的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以外的東西)嗎? 謝謝!

+0

你能調試代碼嗎?選擇之前保存的值後,「ddlSeelct.SelectedValue」是什麼? –

+0

所以我只是調試它,它看起來像從下拉列表中選擇正確的索引,但它沒有運行FVStudentClass_ModeChanging,直到太晚。它在編輯模式下點擊更新按鈕時運行代碼,而不是在編輯模式第一次出現時運行它。任何想法如何解決這個問題? – Austin

回答

2

嘗試執行邏輯以選擇FormView DataBound事件中的DropDownList項目,ModeChanging事件發生在實際更改模式之前。

+0

完美!這解決了它! – Austin

0

您應該能夠將ddlSelect.SelectedValue設置爲您希望下拉選擇的值。

ddlSelect.SelectedValue = dt.Rows[0]["PN"].ToString(); 
相關問題