2016-06-13 19 views
-1

データベースからドロップダウンリストが作成されています。これはうまくいきます。それは拘束力があり、期待どおりの正しいデータを示しています。しかし、値を変更してデータベースに保存しようとすると、何も保存されず、NULL例外が発生します。値DropDownListが設定されていません

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 */ 
} 

私の保存]ボタンをテストするには、私はこれを使用しています:

はここに私のC#のコードです

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タグと

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

として

<FORM EnableViewState = false runat="server"> 

を持っています。

フォームタグでEnableViewState = falseを削除すると、2回目のクリック後にのみ動作します。最初のクリックで保存されることはありません。

誰でもお手伝いできますか?いつものようにありがとう。

+0

'IsPostBack'条件チェックの外に' ddStatus_Bind(); 'を残してください – techspider

+0

これは今では値が常に最初のものですか? –

+0

良いですが、あなたのコードに間違いはありません。これを 'IsPostBack'の中に戻し、' 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を理解していません。

関連する問題