其实我发现chkContactType.Items
是空的,当我通过代码。 我甚至增加了一个手表chkContactType.Items.Count
,这是从来没有什么,但0我severly困惑,现在,因为它显然不是我的插入方法工作得很好,它使用这些相同的箱子,并插入值的成员为每个项目。 ...
我有一些检查,我需要设置基于项目价值CheckState因为这是被存储在DB的是已经存在的记录列表框控件。 不幸的是,我只看到一个途径,使未存储的索引设置此。 该指数是本地控制的话,例如,控制ContactType中有15个项目。 指数是0-14。 项值分别为39,40,41,42,43,44,45,46,47,48,49,50,2077,2078,2079。 我无论怎样才能与值的成员值值的成员值,或每个退回的项目的设置checkstate的索引值?
谢谢
private void PaintDetails(Guid cNoteID)
{
var cNoteDetailDT = CurrentCaseNote.GetCNoteDetail(cNoteID);
LoadCaseNoteDetailData(cNoteDetailDT.Rows[0]);
// Load Contact Type Data for this CaseNote
// contactTypeDT returns ItemID of chk items
// that were checked for this Guid
using (var contactTypeDT = CurrentCaseNote.GetCNoteContactType(cNoteID))
{
if (contactTypeDT.Rows.Count > 0)
foreach (DataRow row in contactTypeDT.Rows)
{
LoadContactTypeData(row);
}
}
}
private void LoadContactTypeData(DataRow row)
{
// This does not work
var theItem = row["ItemID"].ToString();
// itemIndex always ends up set to -1
var itemIndex = chkContactType.Items.IndexOf(theItem);
chkContactType.SetItemChecked((int) itemIndex, true);
// This works I just need to supply the correct index
chkContactType.SetItemChecked(0,true);
}
编辑回应发表评论
这是我如何填充列表框选中。 我知道有一个“神奇的数字”有。 我正在做。 它涉及ContactType的DB的类别ID。
// Contact Type Check List Box
chkContactType.DataSource = CurrentCaseNote.GetMaintItems(1);
chkContactType.DisplayMember = "ItemDescription";
chkContactType.ValueMember = "ItemID";
然后CurrentCaseNote BLL(有点) - >
public static DataTable GetMaintItems(int iCat)
{
IQueryable<tblCaseNotesMaintItem> tItems = CaseNoteDAL.GetCNTable();
return (tItems.Where(item => item.CategoryID == iCat & item.IsActive).OrderBy(
item => item.OrderID).Select(item => new {item.ItemID, item.ItemDescription})).CopyLinqToDataTable();
}
最后是DAL - >
public static Table<tblCaseNotesMaintItem> GetCNTable()
{
return dcCaseNotes.GetTable<tblCaseNotesMaintItem>();
}
编辑2
这是我的代码现在看起来像,但仍然没有去。 这就像是从来没有填充ItemCount中....
// Load Contact Type Data for this CaseNote
using (var contactTypeDT = CurrentCaseNote.GetCNoteContactType(cNoteID))
{
if (contactTypeDT.Rows.Count > 0)
foreach (DataRow row in contactTypeDT.Rows)
{
LoadContactTypeData(row);
}
}
}
private void LoadContactTypeData(DataRow row)
{
// This does not work
var theItem = row["ItemID"];
for (int i = 0; i < chkContactType.ItemCount; i++)
{
if(theItem == chkContactType.GetItemValue(i))
chkContactType.SetItemChecked(i,true);
}
}