Всплывающее окно Передача переменных данных - PullRequest
0 голосов
/ 09 ноября 2011

Я создаю веб-приложение для своей компании, которое должно заниматься обработкой форм и манипулированием базой данных. Приложение реализовано с использованием .NET Framework 3.5 с использованием C # и Visual Studio 2008 в качестве IDE и Microsoft SQL Server 2005 в качестве базы данных.

Вот моя проблема:

  1. У меня есть много форм

  2. Но мой босс хочет, чтобы я создал одну страницу для базы данных. обработка (в будущем будет легче расширяться)

Я выяснил, что единственный способ решить эту проблему - это иметь только 1 файл .aspx (который содержит все о базе данных) и вызывать его как всплывающее окно каждый раз, когда формы должны иметь дело с базой данных.

Вот еще одна моя проблема:

  1. Из-за отсутствия HTTP-состояния я не могу обработать и передать переменная между двумя разными окнами.

  2. Мне удалось создать определенные функции Javascript и получить переменная передается на дисплей, однако она может передавать только переменную это первичный ключ в таблице. Обрабатывать другие столбцы в таблица возможна, но как следствие я должен написать очень длинный встроенный скрипт на моей странице .aspx и после того как он скомпилирован людьми может легко просмотреть, как легко получить доступ к базе данных моей компании. Следовательно, я не одобряйте это (кроме того, чтобы иметь дело с 1 формой, мне нужно создать длинный код, представьте, если у меня более 1000 форм!)

Итак, вы, ребята, можете помочь мне двумя способами:

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

  2. Если вы думаете, что всплывающее окно - это решение, вы можете поделиться некоторыми фрагменты, которые могут помочь мне выяснить переменную, проходящую между два разных окна . Я могу использовать некоторые советы, особенно от некоторых Javascript эксперт по этому вопросу:).

Примечание. Решение должно быть работоспособным в ASP.NET Framework 3.5 и протестировано с использованием версии браузера IE: 8.

P.S .: Это краткое объяснение потока моих заявок

  1. Допустим, я ввел данные о товаре (он имеет несколько свойств id, имя, цена и т. Д.) В базу данных

  2. Позже я каким-то образом хочу отредактировать одно или несколько свойств этого продукта, поэтому мне нужно запустить форму, которая называется "editor.aspx"

  3. Вместо ввода идентификатора продукта (который является первичным ключом) в форму (и редактирования данных на основе введенного идентификатора продукта) и риска ошибочного редактирования правильных данных, я предоставляю небольшую кнопку в форма (назовем ее btSearch), которая запустит новое всплывающее окно, которое содержит сетку базы данных всего продукта (с включенным выбором)

  4. Теперь мне просто нужно просмотреть сетку, выбрать конкретную строку, она закроет всплывающее окно, и я ожидаю увидеть несколько данных из этой строки, появившихся на моей исходной странице (в текстовых полях / метках)

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

Ответы [ 4 ]

1 голос
/ 09 ноября 2011

Я недавно написал что-то вроде этого: обработчик базы данных в виде файла aspx.Но я вызвал его, используя ajax / jquery.

Когда мой файл aspx готов, я записываю что-то в поток ответов, некоторый код, строку json, что угодно.

Пример:

$.post("yourdatabasehandler.aspx", { name: "John", lastname: "Smith" }, function(data) {
    alert("Response from page: " + data);
  });

В этомНапример, имя и фамилия - это значения, которые публикуются на вашем сайте.Вы можете получить к ним доступ следующим образом:

string name = Request.Params["name"]
// Do your database , validation and whatever logic here
Response.Write("Cool dude");

Приведенный выше javascript предупредит "Клевый чувак" после того, как ваш обработчик базы данных будет готов.Внутри вашего javascript вы можете реагировать на ответ как угодно - например, перезагрузить страницу.

Надеюсь, это поможет?Привет

1 голос
/ 09 ноября 2011

Если вы используете всплывающее окно, вы всегда можете использовать QueryStrings для передачи значения, идущего в ваше всплывающее окно.

window.open("popup_page.aspx?id=" + id + "&name=" + name)

для доступа к нему в popup_page.aspx

string sID = Request.QueryString("id");
string sName = Request.QueryString("name");

Обновление: если вы используете IE, это может вам помочь.

function ShowPopup(strMessage) 
{   
   var returnValue= window.showModalDialog("popup_page.aspx");

}

popup_page.aspx

<asp:Button ID="btnReturnValue" runat="server" Text="Proceed" OnClientClick="window.returnValue='some message';window.close();" />

Примечание: Обратите внимание, что это работает только в IE , поэтому я предлагаю вместо этого использовать следующее:

jQuery

AjaxControlToolkit ModalPopup

Я лично предлагаю использоватьJQuery.:)

1 голос
/ 09 ноября 2011

"1. Из-за отсутствия HTTP-состояния я не могу обработать и передать переменную между двумя разными окнами."

Вы очень ошиблись с этим комментарием, пытаясь начатьMSDN и ASP.Net "Как передавать значения между веб-страницами ASP.Net" .Для перехода между Windows требуется немного больше размышлений и, возможно, немного Javascript для обновления родительских окон или для обратной передачи в окне шилда и т. Д.

0 голосов
/ 10 ноября 2011

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

<script language="javascript">

function GetRowValue(val)
{
    window.opener.document.getElementById("ctl00_ContentPlaceHolder1_TextBox2").value = val;
   // make sure you change the TextBoxId as respective to your creation 
    window.close();
}

</script>

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<!-- Reserve the code below, as after you configure data source you -->
<!-- will alter this code drastically therefore-->
<!--you have to make sure to paste this code --> 
<!-- again inside this Gridview element once you configure your data source -->
    <asp:TemplateField>
        <AlternatingItemTemplate>
            <asp:Button ID="btnSelect" runat="server" Text="Select" />
        </AlternatingItemTemplate>
        <ItemTemplate>
            <asp:Button ID="btnSelect" runat="server" Text="Select" />
        </ItemTemplate>
    </asp:TemplateField>
<!-- This part must be reserved -->
</Columns>

Также не забудьте указать строку подключения и команду sql в источнике данных.

Остальные просто следуют этому руководству и копируют и вставляют код целиком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...