DropDownList中的值未设置

时间:2016-06-13 17:55:11

标签: c# asp.net webforms

我从数据库中填充了一个下拉列表。这工作正常。它具有绑定性并按预期显示正确的数据。但是当我更改它的值并尝试将其保存到数据库时,没有任何东西被保存,这会导致NULL异常。

这是我的C#代码:

protected DropDownList ddStatus;
protected RadioButtonList rblInternalNotes;

public void Page_Load(object sender, System.EventArgs e)
{
    if(!Page.IsPostBack)
    {
        ValidateSession();

        ddStatus_Bind();

        rblInternalNotes.Items.Insert(0,new ListItem("External","0"));
        rblInternalNotes.Items.Insert(1,new ListItem("Internal","1"));

        btnSave.Attributes.Add("onClick","return checkForm();");

                       /* code continues */
}

要测试我的保存按钮,我正在使用它:

public void btnSave_OnClick(object Sender, System.Web.UI.ImageClickEventArgs E)
    {
        Response.Write(ddStatus.SelectedValue);
        Response.End();

绑定的代码是:

protected void ddStatus_Bind()
{
    SqlConnection Conn = GetConnection();
    string SQL;
    SqlCommand Cmd;
    SqlDataAdapter DAdpt = new SqlDataAdapter();
    DataSet DSet = new DataSet();

    SQL = "SELECT Name,StatusID FROM tbl_test";
    Cmd = new SqlCommand(SQL,Conn);

    DAdpt.SelectCommand = Cmd;
    DAdpt.Fill(DSet);

    ddStatus.DataSource = DSet;
    ddStatus.DataBind();

    Conn.Close();
}

这是我的前端代码:

<TR ID="trStatus" RunAt="Server" visible="false">
    <TD Class="Spreadsheet"><B>Status</B></TD>
    <TD Class="Spreadsheet">
        <ASP:DropDownList ID="ddStatus" DataTextField="Name" DataValueField="StatusID" AppendDataBoundItems="True" RunAt="Server"></ASP:DropDownList>
    </TD>
</TR>   

保存按钮:

<ASP:ImageButton ID="btnSave" OnClick="btnSave_OnClick" ImageURL="/images/buttons/btnSave.gif" Border="0" RunAt="Server"/>

我有

 <FORM EnableViewState = false runat="server">

作为表单标记和

 <%@ Page Language="C#" debug="True" Inherits="Default" src="Default.cs" validateRequest="false" EnableEventValidation="false"%> 

作为页面标记。

如果我删除了表单标记中的EnableViewState = false,它只会在第二次点击后生效。它永远不会在第一次点击时保存。

有人可以帮忙吗?一如既往地谢谢。

1 个答案:

答案 0 :(得分:0)

让它发挥作用!

我刚刚在页面初始化时进行了绑定,就像这样

protected override void OnInit(EventArgs e)
{

        ddStatus_Bind();

        rblInternalNotes.Items.Insert(0,new ListItem("External","0"));
        rblInternalNotes.Items.Insert(1,new ListItem("Internal","1"));

}

我希望能帮助其他面临同样问题的人。

P.S:我不明白这篇文章的下注。