-1

我遇到了一个问题,当用户单击删除按钮时,什么也没有发生,当我插入断点进行检查时,The selectLocStationis null。为什么会这样?任何人都可以解决我对此的疑问吗?

这是您查看我的删除代码的代码。感谢提供的任何帮助。

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

4 回答 4

1

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

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

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

于 2012-08-01T08:53:40.233 回答
0

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

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

坚持

EnableViewState = true;

为了不删除您选择的值

于 2012-08-01T09:01:54.407 回答
0

查看您用来绑定组合框的方法

cbLocStation.Items.Add(locstationData);

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

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

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

尝试像这样更改绑定部分

于 2012-08-01T09:35:11.200 回答
0

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

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

于 2012-08-01T09:04:56.640 回答