xpertzgurtej Ответов: 2

Как добавить данные в dropdownlist во время выполнения и автоматически выполнить повторную привязку в dropdownlist


Привет,
Я хочу получить представление о своем требовании:
У меня есть asp.net веб-страница для ввода сведений о книге, где пользователь выбирает автора книги из выпадающего списка. Существует главная страница автора, с которой мы вводим все имена авторов.Но предположим, что есть новый автор, которого нет в выпадающем списке, тогда я хочу дать пользователю возможность ввести новое имя автора со страницы ввода книги, и этот автор будет вставлен в базу данных и автоматически добавлен в выпадающий список, чтобы пользователь мог выбрать этого автора. Пожалуйста, подскажите мне, как это сделать.

Что я уже пробовал:

Я думаю, что мы можем использовать для этого веб-API.Но понятия не имею, как это сделать.

Shashank Laxman

Но пользователь не может ввести полное имя автора книги,тогда какой смысл хранить его в базе данных.

Например : пользователь Amish Tripathi может войти как Amish(для Amish Tripathi).

Я предлагаю Вам вставить новое имя автора в базу данных, а затем заполнить все данные книги, принадлежащие этому автору. Это создаст меньшую нагрузку на пользователя.

F-ES Sitecore

Мы не можем ответить на ваш вопрос конкретно, потому что мы не знаем, какой язык вы используете, какую технологию презентации вы используете, какую технологию доступа к базе данных вы используете, как выглядит ваша схема базы данных или что-то еще на самом деле.

What you need to do is had a hidden text box for the "Other" on your form and give it a style of "display:none" so it isn't shown. Add an "Other" option to the dropdown of authors, you can give it a special value like "0" or "-1". Use javascript to listen to the onchange event of the dropdown and if it's "Other" (based on the value, not the text) make your hidden box appear by changing the style to "display:block", if it's not "Other" set the style to "display:hidden". Now when your form is selected, if the dropdown option is "Other" then read the text from the textbox and add it to your database, get the ID of the just-added entry and use that.

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

xpertzgurtej

я использую asp.net и sql server. Спасибо, что подали идею решить мою проблему ... большое-большое вам спасибо..

Laxmidhar tatwa technologies

вы должны отобразить код .в основном. если вы хотите добавить из текстового поля с помощью нажатия кнопки, то код будет DropDownList1.Предметы.Добавить(TextBox1.Text);

2 Ответов

Рейтинг:
14

Vincent Maverick Durano

Я согласен с тем, что F-ES Sitecore. Что вы можете сделать, так это добавить Оптион "другие" в свой DropDownList и как только эта опция будет выбрана, вы сможете разместить TextBox и Button в Panel/Div чтобы сгруппировать их и затем запустить это Div чтобы быть показанным на странице. У вас есть два варианта, чтобы сделать это, если вы работаете над ASP.NET веб-формы.

Первый вариант-это использование серверной реализации, а именно обработка DropDownList_SelectedIndexChanged событие и на этом событии вы можете проверить значение "другие" и показать свое TextBox на страницу, где пользователи могут вводить данные, а затем на Button_Click событие, вы можете написать код для вставки этих данных в вашу базу данных. Вам не нужен веб-API для реализации этого, если только ваши данные не поступают с другого сервера.

Второй вариант-использование клиентской реализации, может быть простым JavaScript или jQuery И вам нужно создать веб-API или метод страницы или веб-сервис для доступа к вашим данным через AJAX-вызов. Вот краткий пример использования plain JavaScript:

HTML:

<select name="color" onchange='checkvalue(this.value)'> 
    <option>Select Authors</option>  
    <option value="1">You</option>
    <option value="2">Me</option>
    <option value="others">Others</option>
</select>
<div id="divNewEntry" style='display:none'> 
        <input type="text" id="txtNewAuthor" />
        <input type="button" id="btnSave" value="Save" /> 
</div>


язык JavaScript:
function checkvalue(val)
{
    if(val==="others")
       document.getElementById('divNewEntry').style.display='block';
    else
       document.getElementById('divNewEntry').style.display='none'; 
}


Как только вы это сделаете, вы можете использовать jQuery AJAX для связи с вашим сервером (API), чтобы вставить базу данных в событие нажатия кнопки примерно так:

 $(document).ready(function () {  
            $('#btnSave').click(function () {  
                $.ajax({  
                    type: 'GET',  
                    url: 'api/Author',  
                    dataType: 'json',  
                    success: function (data) {  
  			// You can repopulate your dropdownlist here to reflect the newly added entry
			// then hide the Div here containing the TextBox and Button
                    }  
  
                });  
            });  
 
});  


Вот отличная статья, в которой рассказывается о том, как получить доступ к вашим данным с помощью jQuery AJAX: Множество способов связи с вашей базой данных с помощью jQuery AJAX и ASP.NET[^]


Рейтинг:
1

xpertzgurtej

Спасибо, что предоставили мне решение с 2 примерами.. я использую asp.net а sql server и вовсе может пойти с любым из этих двух предложенных вами решений.Но я предпочту клиентскую сторону ... спасибо..


Vincent Maverick Durano

Круто. Только, пожалуйста, не используйте область решения при ответе. Вместо этого вы можете использовать кнопку "Задать вопрос или комментарий".

xpertzgurtej

хорошо ... спасибо