Назначение значения (или любого другого параметра) для asp: checkbox - PullRequest
2 голосов
/ 06 февраля 2009

Я почти уверен, что это невозможно, но я все равно это выброшу.

У меня около 10 элементов управления asp: checkbox на странице, и мне нужно идти и обновлять базу данных каждый раз, когда любой из них проверяется / не проверяется.

Прямо сейчас у меня все они привязаны к одному обработчику событий, который срабатывает на CheckedChanged, затем я приведу отправителя к Checkbox и получу идентификатор, и назначу значение на основе этого идентификатора параметру, который получает проходы к хранимой процедуре. ,

Можно ли назначить пользовательский параметр для каждого флажка, поэтому мне не нужно привязывать их идентификаторы к значениям параметров sproc.

Спасибо.

p.s. статический словарь <>, кажется, путь, но я не могу получить примеры из этого поста для работы в .net 2.0

Ответы [ 3 ]

3 голосов
/ 06 февраля 2009

Почему бы не установить собственный флажок для сервера?

namespace CustomControls
{
    public class CustomCheckBox : CheckBox
    {
       string _myValue;
       public string MyValue
       {
           get { return _myValue; }
           set { _myValue = value; }
       }

       public CustomCheckBox()
       {
       }
    }
}

<%@ Register TagPrefix="MyControls" Namespace="CustomControls"%>
<MyControls:CustomCheckBox id="chkBox" runat="server" MyValue="value"></MyControls:CustomTextBox>
1 голос
/ 06 февраля 2009

Возможно, стоит попробовать использовать обычные флажки HTML и отправить их в виде списка, разделенного запятыми:

<input type="checkbox" id="item-1" name="items[]" value="1" />
<label for="item1">Item 1</label>
....
<input type="checkbox" id="item-n" name="items[]" value="n" />
<label for="item1">Item n</label>

Тогда на стороне сервера вы можете сделать что-то вроде:

string tmp = Request.Form["items[]"];
if (!string.IsNullOrEmpty(tmp)) {
    string [] items = tmp.Split(new char[]{','});
    // rest of processing, etc.
}

Надеюсь, это уменьшит объем работы, выполняемой на стороне сервера.

0 голосов
/ 06 февраля 2009

Вы можете унаследовать его и добавить необходимое свойство.

Или используйте словарь для сопоставления идентификаторов элементов управления с идентификаторами вашей базы данных.

EDIT: словарь содержит список пар ключ / значение. ИД элемента управления может быть ключом, а значение «настраиваемого параметра», относящегося к базе данных, вы хотите (я не уверен на 100%, о чем вы говорите, но Словарь может его сохранить) может быть значением. Когда вы хотите получить значение, вы получите его с помощью:

myDictionary[keyValue]

Объявить как:

Dictionary<string, string> myDictionary = new Dictionary<string, string>();

РЕДАКТИРОВАТЬ 2: Для статического словаря:

public static readonly IDictionary<string, string> myDictionary = new Dictionary<string, string>();

static ClassConstructor()
{
    myDictionary.Add("key1", "value1");
    myDictionary.Add("key2", "value2");
    myDictionary.Add("key3", "value3");
}
...