选择下拉列表的初始值

时间:2013-05-29 22:15:50

标签: c# .net sql drop-down-menu formview

我试图让我已经在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之外的东西)吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

尝试实现逻辑以选择FormView DropDownList事件上的DataBound项,ModeChanging事件在模式实际更改之前发生。

答案 1 :(得分:0)

您应该只需将ddlSelect.SelectedValue设置为您希望下拉列表选择的值。

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