2012-08-01 46 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)); 

试图改变这样的