2016-06-13 110 views
-1

我有一個從數據庫填充的下拉列表。這工作正常。它具有約束力並按預期顯示正確的數據。但是,當我更改它的值並嘗試將其保存到數據庫時,沒有任何內容正在保存,這會導致NULL異常。DropDownList沒有設置的值

這裏是我的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,它將起作用,但僅在第二次點擊後才起作用。它不會在第一次點擊時保存。

任何人都可以請幫忙嗎?一如既往地感謝。

+0

keep'ddStatus_Bind();'IsPostBack'條件檢查 – techspider

+0

現在它的值是否始終是第一個。 –

+0

不錯,你的代碼沒有錯;現在將其保存在IsPostBack中並在Page標籤上添加EnableViewState =「true」'。 – techspider

回答

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:我不明白在這篇文章downvote雖然。