2011-01-19 5 views
1

다음과 같이 표시되는 시스템 널 참조 예외 오류가 발생합니다. alt text널 참조 예외

4 개의 "드롭 다운리스트"에서 유효성 검사를 수행하고 있습니다. 나는 무엇을 잘못했을 수 있 었는가?

코드가 아래에 있습니다. 페이지의

protected void addExhibitButton_Click(object sender, EventArgs e) 
    { 

     if (Page.IsValid) 
     { 
      DateTime exhibitDate = DateTime.Now; 
      int caseid = Convert.ToInt32(DropDownListcaseid.SelectedItem.Text); 
      string exhibittype = exhibitTypeDropDownList.Text.ToString(); 
      string storedloc = storedLocationDropDownList.Text.ToString(); 
      string offid = DropDownList1.SelectedItem.Text.ToString(); 
      string status = "Pending"; 
      Stream imgStream = exhibitImageFileUpload.PostedFile.InputStream; 
      int imgLen = exhibitImageFileUpload.PostedFile.ContentLength;     
      byte[] imgBinaryData = new byte[imgLen]; 
      int n = imgStream.Read(imgBinaryData,0,imgLen); 
      try 
      { 
       SqlConnection connections = new SqlConnection(strConn); 
       SqlCommand command = new SqlCommand("INSERT INTO Exhibits (CaseID, ExhibitType, ExhibitImage, DateReceived, StoredLocation, InvestigationStatus, OfficerID, SuspectID, InvestigatorID, ManagerID, AdminID) VALUES (@CaseID, @ExhibitType, @ExhibitImage, @DateReceived, @StoredLocation, @InvestigationStatus, @OfficerID, @SuspectID, @InvestigatorID, @ManagerID, @AdminID)", connections); 


       SqlParameter param0 = new SqlParameter("@CaseID", SqlDbType.Int); 
       param0.Value = caseid; 
       command.Parameters.Add(param0); 

       SqlParameter param1 = new SqlParameter("@ExhibitType", SqlDbType.NText); 
       param1.Value = exhibittype; 
       command.Parameters.Add(param1); 

       SqlParameter param2 = new SqlParameter("@ExhibitImage", SqlDbType.Image); 
       param2.Value = imgBinaryData; 
       command.Parameters.Add(param2); 

       SqlParameter param3 = new SqlParameter("@DateReceived", SqlDbType.SmallDateTime); 
       param3.Value = exhibitDate; 
       command.Parameters.Add(param3); 

       SqlParameter param4 = new SqlParameter("@StoredLocation", SqlDbType.NText); 
       param4.Value = storedloc; 
       command.Parameters.Add(param4); 

       SqlParameter param5 = new SqlParameter("@InvestigationStatus", SqlDbType.VarChar, 50); 
       param5.Value = status; 
       command.Parameters.Add(param5); 

       SqlParameter param6 = new SqlParameter("@OfficerID", SqlDbType.NChar, 10); 
       param6.Value = offid; 
       command.Parameters.Add(param6); 

       SqlParameter param7 = new SqlParameter("@SuspectID", SqlDbType.NChar, 10); 
       param7.Value = DBNull.Value; 
       command.Parameters.Add(param7); 

       SqlParameter param8 = new SqlParameter("@InvestigatorID", SqlDbType.NChar, 10); 
       param8.Value = DBNull.Value; 
       command.Parameters.Add(param8); 

       SqlParameter param9 = new SqlParameter("@ManagerID", SqlDbType.NChar, 10); 
       param9.Value = DBNull.Value; 
       command.Parameters.Add(param9); 

       SqlParameter param10 = new SqlParameter("@AdminID", SqlDbType.NChar, 10); 
       param10.Value = adminID; 
       command.Parameters.Add(param10); 

       connections.Open(); 
       int numRowsAffected = command.ExecuteNonQuery(); 
       connections.Close(); 

       if (numRowsAffected != 0) 
       { 

        DropDownListcaseid.ClearSelection(); 
        exhibitTypeDropDownList.Text = null; 
        storedLocationDropDownList.Text = null; 
        DropDownList1.ClearSelection(); 
        messageLabel.Text = "Rows Inserted successfully"; 
        messageLabel.Visible = true; 
       } 
       else 
       { 
        messageLabel.Text = "An error occured while inserting columns."; 
        messageLabel.Visible = true; 

       } 
      } 
      catch (Exception ex) 
      { 
       string script = "<script>alert('" + ex.Message + "');</script>"; 
      } 

     } 

    } 

이미지는 내가 (offcourse는 드롭 다운 항목 없음) 찾아보기 버튼을 제외한 모든 드롭 다운 목록에 유효성 검사 항목을 적용 alt text

아래 실행된다. 분명히 내 지식에 따르면 나는 어떤 분야도 빠져 나가지 않았다. 그래서 원인이 무엇일까?

+0

음, DropDownListcaseid 또는 해당 SelectedItem 속성이 null입니다. 누구도 그 객체와 관련된 코드를 보지 않고 추측하는 것 이상의 것을 할 수 있습니다. –

+0

이러한 드롭 다운 목록은 어떻게 작성됩니까? 그것들은'.aspx' 안에 존재합니까? –

+0

그렇습니다. 오류가 중단 점으로 발견되었습니다. 고마워. 조엘. 그것은 세션에서 데리러와 내가 그 값을 가능하게 페이지를 제대로 실행 했어야 누락 된 필드 였어 ... 문제가 지금 해결 ... 다시 만나서 반갑습니다 그림자 ... :) – Selase

답변

0

적어도 하나의 드롭 다운 목록에서 속성이 null을 반환하도록하여 아무 것도 선택하지 않은 것으로 보입니다. 속성에 액세스하려고 시도하기 전에 속성이 null인지 확인하도록 코드를 변경하여 Text 속성을 지정합니다.

+0

그게 맞아. 세션에서 선택해야하는 값 하나가 누락되었습니다. 누락 된 것 같습니다. 중단 점을 사용하여 결정할 수있었습니다. – Selase

+0

당신이 당신의 문제를 해결할 수 있다고 들었습니다. :) –

0

코드 디버그 및 어떤 개체 또는 속성이 null인지 알 수 있습니다. dropdownlist가 항목을 선택했는지 확인하는 가장 간단한 방법은> 1이어야하는 SelectedIndex 속성을 확인하는 것입니다.