2016-06-13 3 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 EnableViewState = false runat="server"> 
형태의 태그로

및 페이지 태그로

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

있습니다.

양식 태그에서 EnableViewState = false을 삭제하면 두 번째 클릭 후에 만 ​​작동합니다. 첫 번째 클릭에는 절대로 저장되지 않습니다.

아무도 도와 줄 수 있습니까? 언제나처럼 고마워.

+0

'IsPostBack' 조건 검사에서'ddStatus_Bind();'를 유지하십시오. – techspider

+0

값은 항상 첫 번째 값 이었습니까? –

+0

좋은, 당신의 코드에 아무 문제가 없습니다; 이제'IsPostBack' 안에 다시 저장하고 EnableValue = "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")); 

} 

같은 페이지의 초기화에 결합했다.

추신 : 나는이 게시물에 downvote을 이해하지 않습니다.

관련 문제