ASP.NET Заполнить список без обратной передачи - PullRequest
1 голос
/ 13 июня 2011

У меня есть простая страница aspx с текстовым полем, кнопкой ссылки и списком.

Список должен быть заполнен значениями из хранимой процедуры в базе данных SQL.

Что-то, что я хотел бы сделать, это заполнить список этими переменными, когда пользователь нажимает кнопку ссылки. В идеале я бы хотел сделать это БЕЗ постбэка.

Есть ли способ, которым это может быть достигнуто?

Спасибо

Jason

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

Я очень быстро смоделировал один для вас.

<form id="form1" runat="server">

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<div>


    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>
            <br />
            <asp:ListBox ID="ListBox1" runat="server" DataTextField="yourdesiredcolumnamegoeshere"></asp:ListBox>
        </ContentTemplate>
    </asp:UpdatePanel>

</div>

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="Data Source=;Initial Catalog=;User ID=;password=" 
    ProviderName="System.Data.SqlClient" 
    SelectCommand="SELECT [yourdesiredcolumnamegoeshere] FROM [yourtablenamegoeshere]">
</asp:SqlDataSource>
</form>

В коде:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    ListBox1.DataSource = SqlDataSource2;
    ListBox1.DataBind();
}

Конечно, вы бы изменили SqlDataSource на свой сохраненный процесс, но когда вынажал на кнопку, он заполнил бы этот список без обратной передачи.Дайте мне знать, если вам нужно что-нибудь еще.

-JJ

1 голос
/ 13 июня 2011

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

0 голосов
/ 14 июня 2011

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

Если, однако, вы не хотите осуществлять обратную передачу, у вас есть 2 варианта:

  1. Использовать веб-методы.На вашей странице создайте статический метод и украсьте его атрибутом WebMethod.
  2. Другой IHttpHandler.Создайте реализацию IHttpHandler и переопределите ProcessRequest

. Для обоих действий вам потребуется использовать AJAX для запроса к серверу (либо веб-метод, либо обработчик http).Вы не можете использовать MS AJAX, потому что это вызовет частичную обратную передачу.Используйте jQuery для выполнения запроса.

Обратите внимание, что UpdatePanel использует MS AJAX и, следовательно, вызовет частичную обратную передачу.

...