Изменен код @Save, позволяющий перемещать элементы, данные которых связаны с ListBox, используя свойство DataSource.
public void MoveItem(int direction)
{
// Checking selected item
if (listBox1.SelectedItem == null || listBox1.SelectedIndex < 0)
return; // No selected item - nothing to do
// Calculate new index using move direction
int newIndex = listBox1.SelectedIndex + direction;
// Checking bounds of the range
if (newIndex < 0 || newIndex >= listBox1.Items.Count)
return; // Index out of range - nothing to do
UnifyCamera selected = listBox1.SelectedItem as UnifyCamera;
// modify the data source list
inputData.Cameras.RemoveAt(listBox1.SelectedIndex);
inputData.Cameras.Insert(newIndex, selected);
// re-bind your data source
((ListBox)listBox1).DataSource = null;
((ListBox)listBox1).DataSource = this.inputData.Cameras;
((ListBox)listBox1).DisplayMember = "Name";
// Restore selection
listBox1.SetSelected(newIndex, true);
}
Где UnifyCamera
- мой пользовательский класс, который хранится в списке inputData.Cameras
, который возвращает List<UnifyCamera>
.
Вместо ассоциативного массива вы должны просто передать массив выражений критериев, ala:
$condition = array(
'message_id = ' . $messageId,
'profile_id = ' . $userId
);
(и убедитесь, что вы правильно экранировали эти значения, если они поступают из пользовательского ввода )
Лучше использовать это :
$condition = array(
'message_id = ?' => $messageId,
'profile_id = ?' => $userId
);
Символы-заполнители (?) Заменяются значениями, экранируют специальные символы и заключают их в кавычки.