选择更改后,下拉列表变空

时间:2012-08-20 21:16:16

标签: c# asp.net sqldatasource

我是c#和asp.net的新手。我有GridView的某些记录。选择任何记录后,它将显示在DetailsView中。我的详细信息视图有3个DropDownLists。在我的详细信息视图的编辑模式中,当我在下拉列表中更改我的选择并更新它时,特定字段采用空值。我使用了OnSelectedIndexChanged并且我确定它被触发但是值为null。这是我的代码。

protected void DropDownList1_SelectedIndexChanged(object sender,EventArgs e)
{
    DropDownList ddl = (DropDownList)this.form1.FindControl("DropDownList1");
    hi.Visible = true;
    if (ddl != null)
    {
        ddl.Text = ddl.SelectedItem.Value;
        ddl.DataBind();
    }     
}

我也尝试使用SelectedValue属性进行更新,但也没有用。

<asp:DropDownList ID="DropDownList1" DataTextField="strCollegeLongName"
    DataValueField="strCollegeLongName" runat="server" 
    DataSourceID="SqlDataSource1" autoPostBack="true" AppendDataBoundItems="false" 
    SelectedValue='<%#Bind="College">%'>
</asp:DropDownList>

UpdateCommand="UPDATE [RegistrationFormInfo] SET [FirstName]=@FirstName,
    [LastName]=@LastName,[EmailAddress]=@EmailAddress,[GradDate]=@GradDate,
    [WorkAuth]=@WorkAuth,[Address]=@Address,[Phone]=@Phone,[UFID]=@UFID,
    [GatorAcct]=@GatorAcct,[College]=@College,[Major]=@Major,[UserType]=@UserType,
    [AdminUser]=@AdminUser,[blnActive]=@blnActive,[EntryTS]=@EntryTS WHERE [Guid]=@Guid "

所以,在这里它会抛出一个错误,说@College不存在,但我的表格有College列。

我被困住了,非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

嗯,@ College错误可能是关于未提供的命名参数,而不是关于缺少的列。

答案 1 :(得分:1)

代替DropDownList ddl = (DropDownList)this.form1.FindControl("DropDownList1");,试试这个:

DropDownList ddl = (DropDownList)sender;

`

答案 2 :(得分:1)

致电ddl.DataBind();将重置SelectedIndex。为了避免代码中的循环逻辑,在ddl的DataBind()事件处理程序中调用SelectedIndexChanged是个坏主意。