Я переписываю какое-то старое приложение в VB.NET для C # и ASP.NET 3.5. Все идет хорошо, но у меня есть эта проблема - и, поскольку база данных не будет изменена, я должен найти решение этой проблемы.
Старое приложение сохраняет список желаемых дней (с воскресенья по субботу) в байтах. Вот как это сделать:
If chkDaily.Checked Then
daysBitmask = 127 ' This is for a full week
Else
For i = 0 To chklstWeekly.Items.Count - 1
If chklstWeekly.Items(i).Selected Then
' List the selected items
daysBitmask += 2 ^ CInt(chklstWeekly.Items(i).Value)
daysBitmask = daysBitmask
Message2.InnerText = daysBitmask
End If
Next
End If
и я преобразовал его в
if (rdbDaysList.SelectedValue == DAILY)
daysBitmask = 127;
//This is for a full week
else
foreach (var d in ckbDaysList.Items)
{
ListItem day = d as ListItem;
if (day.Selected)
{
daysBitmask += Convert.ToByte(Math.Pow(2, Convert.ToDouble(day.Value)));
}
}
Это работает. Моя самая большая проблема заключается в преобразовании байта в код C #.
Оригинальный VB.NET прямо выше:
If (dr("DesireDays").ToString() = "127") Then
chkDaily.Checked = True
chkWeekly.Checked = False
chklstWeekly.Enabled = False
Else
chkWeekly.Checked = True
chkDaily.Checked = False
chklstWeekly.Enabled = True
Dim AD As Integer = dr("DesireDays").ToString()
Dim i As Integer
For i = 0 To chklstWeekly.Items.Count - 1
If AD And 2 ^ i Then
chklstWeekly.Items(i).Selected = True
End If
Next i
Любая помощь будет оценена.