2012-08-01 79 views
-1

刪除數據我遇到由此,當用戶在刪除按鈕點擊,什麼也沒有發生問題,當我插入斷點來檢查,該selectLocStation爲空。爲什麼會發生?任何人都可以解決我對此的疑問嗎?無法從數據庫

下面是代碼給你看我的刪除代碼。欣賞任何提供的幫助。

private void btnDel_Click(object sender, EventArgs e) 
{ 
    using (satsEntities Setupctx = new satsEntities()) 
    { 
     int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue); 

     var DeleteRTiming = 
      (from delLocStation in Setupctx.requiredtimings 
      where delLocStation.RequiredLocationStationID == selectLocStation 
      select delLocStation).SingleOrDefault(); 

     if (DeleteRTiming != null) 
     { 
      Setupctx.DeleteObject(DeleteRTiming); 
      Setupctx.SaveChanges(); 
      cbLocStation.SelectedIndex = -1; 
      this.Edit_TS_Load(null, EventArgs.Empty); 
      MessageBox.Show("Selected Required Timing And " + 
           "The Location Station Has Been Deleted."); 
     } 
    } 
} 

這是用於綁定的代碼。

private void Edit_TS_Load(object sender, EventArgs e) 
    { 
     using (satsEntities Setupctx = new satsEntities()) 
     { 
      var DeleteRT = (from DelRT in Setupctx.requiredtimings 
          join locationstationname ls in Setupctx.locationstationnames on DelRT.RequiredLocationStationID equals ls.locationstationID 
           select ls.locStatname).Distinct().ToList(); 

      foreach (var locstationData in DeleteRT) 
      { 
       cbLocStation.Items.Add(locstationData); 
      } 

     } 
    } 
+0

孔中的結合部分,*是*那裏有'RequiredLocationStationID'的任何數據? – 2012-08-01 08:53:17

+1

'cbLocStation.SelectedValue'的值是多少? – 2012-08-01 08:53:24

+1

你可能會重新綁定「cbLocStation」到達click事件 – shajivk 2012-08-01 08:54:08

回答

1

selectLocStation如何爲空?它是int類型的,你是否得到任何異常,或者你的對象是DeleteRTiming爲null?大概是它的DeleteRTiming這是空的

簡單的答案是,您正在查看的數據庫記錄selectLocStation不存在。

你需要把一個破發點,看看正在舉行什麼由「selectLocStation`,然後手動檢查數據庫,如果數據庫中存在的記錄。

+0

OP表示selectLocStation爲null。 – davenewza 2012-08-01 08:55:34

+0

@davenewza,它怎麼可以爲空?它將被轉換爲int,它將引發一個異常 – Habib 2012-08-01 08:56:42

+1

這永遠不會爲空,他甚至可能在執行行 – shajivk 2012-08-01 08:58:57

0

當你綁定你的控制,你必須將它!的IsPostBack,堅持你的ViewState

If(! IsPostBack) 
{ 
    BindYourControl(); //For just first load. 
} 

堅持與

EnableViewState = true; 

爲了不要抹去您對選擇值

0

如果這是一個Silverlight應用程序,那麼你可能想使用 cbLocStation .SelectedItem 或者它是一個ASP.Net網站,並重新綁定你在每個頁面加載

無論哪種方式的數據你應該有一個異常,因爲你試圖轉換一個空值。

0

見您已經使用到組合框

cbLocStation.Items.Add(locstationData); 

這將「ValueField」和「TextFiled」創建組合框與變量「locstationData」 的值綁定的方法,所以,當你嘗試從cbLocStation.SelectedValue獲得選定值,它將始終包含名稱,因此您無法將其解析爲整數。

沒有爲「添加」,將接受值(Id)的另一個重載和Text(文本顯示)

cbLocStation.Items.Add(new ListItem(locstationData.locStatname, locstationData.locStatID)); 

試圖改變這樣的