我遇到了一个问题,当用户点击删除按钮时,没有任何反应,当我插入断点进行检查时,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 :(得分: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));
尝试像这样更改绑定部分