无法从数据库中删除数据

时间:2012-08-01 08:52:03

标签: c# linq

我遇到了一个问题,当用户点击删除按钮时,没有任何反应,当我插入断点进行检查时,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);
            }

        }
    }

4 个答案:

答案 0 :(得分:1)

selectLocStation怎么可能为空?它是int类型,你得到任何异常,或者你的意思是你的对象DeleteRTiming是null?可能是DeleteRTiming为空

您在数据库中针对selectLocStation查找的记录的简单答案不存在。

您需要设置一个断点并查看“selectLocStation”所持有的内容,然后手动检查数据库是否存在数据库中的记录。

答案 1 :(得分:0)

绑定控件时,必须将其设置为! IsPostback并使用ViewState持久保存

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

坚持

EnableViewState = true;

为了不删除您选择的值

答案 2 :(得分:0)

如果这是一个silverlight应用程序,那么您可能想要使用     cbLocStation.SelectedItem 或者它是一个ASP.Net站点,你重新绑定每个pageLoad上的数据

无论哪种方式,您都应该有一个例外,因为您正在尝试转换空值。

答案 3 :(得分:0)

请参阅用于绑定组合框的方法

cbLocStation.Items.Add(locstationData);

这将创建带有“ValueField”和“TextFiled”的组合框,其值为变量“locstationData” 因此,当您尝试从cbLocStation.SelectedValue获取选定值时,它将始终包含名称,因此您无法将其解析为整数。

“添加”还有另一个重载,它将接受值(Id)和文本(要显示的文本)

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

尝试像这样更改绑定部分