Пустышка в ComboBox - PullRequest
       26

Пустышка в ComboBox

1 голос
/ 17 апреля 2009

Я подошел к моменту принятия решения о том, как указать «ни один не выбран» в привязанном к данным ComboBox. Я хочу применить это ко всем будущим случаям, где это необходимо для ComboBox. Нельзя установить SelectedIndex равным -1 в комбинациях с привязкой данных, а также нельзя установить SelectedValue на ноль.

Обычно предлагаемые решения состоят в том, чтобы добавить фиктивную строку в комбо, но без знания объектов, связанных со строками, комбо не может надежно создать фиктивный объект таким образом, чтобы отобразить сообщение «не выбран». Я не хочу добавлять другой элемент в источник данных, так как это скомпрометирует список для других клиентов, которые не используют фиктивный объект.

Какие еще есть варианты? Кстати, я использую Telerik RadComboBox, но этот сценарий не относится к элементу управления Telerik.

Ответы [ 4 ]

2 голосов
/ 17 апреля 2009

Вы можете определить «пустой элемент» в разметке и добавить любые элементы с привязкой к данным:

<asp:DropDownList DataSourceID="..." AppendDataBoundItems="true" ...>
    <asp:ListItem Value="-1" Text="None"></asp:ListItem>
</asp:DropDownList>

Ключ должен указывать AppendDataBoundItems = "true" для добавления элементов, связанных с данными, к любым элементам, которые были указаны непосредственно в разметке.

Это работает для стандартного ASP.NET DropDownList, но также для Telerik RadComboBox.

1 голос
/ 17 апреля 2009

Добавить новый элемент перед привязкой данных и установить AppendDataboundItems = true;

 cbo.AppendDataboundItems = true;   
 cbo.Items.add(new ListItem("None", "-1");
 cbo.DataSource = x;
 cbo.DataBind();
0 голосов
/ 16 июля 2009

IMO, это то место, где привязка данных не имеет смысла. На элементах управления без привязки к данным это действительно просто - просто добавьте фиктивный элемент в комбинированный список перед ручным добавлением других элементов.

Чтобы надежно сделать это со всеми типами комбинированных списков, которые связаны с данными, вам нужно добавить элемент в ваш набор данных - что-то, что нарушает разделение представления и функции, которые, как предполагается, привязывают к данным. 1003 *

Чаще всего привязка данных экономит ваше время до определенного момента. Когда вы начинаете взламывать вещи, чтобы преодолеть недостаток привязки данных, вы больше не экономите время.

Обычно я рекомендую переоценить, является ли привязка данных правильным решением.

/ Rant over

0 голосов
/ 16 июля 2009

Надеюсь, у меня нет такого свойства, как AppendDataBoundItems в ThickClient (окно приложения) Лучше вставьте фиктивную строку в таблицу источника данных в Zeroth index.

        DataRow dr = dtsource.NewRow();
        dr["username"] = "--New User---";
        dr["Userid"] = 0;


        dtsource.Rows.InsertAt ((dr),0); 
        cmbToUser.DataSource = dtsource;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...