ASP.NET填充没有回发的列表框

时间:2011-06-13 17:32:00

标签: c# sql asp.net listbox linkbutton

我有一个带有文本框,链接按钮和列表框的简单aspx页面。

列表框将填充SQL数据库中存储过程的值。

我想做的是,当用户点击链接按钮时,用这些变量填充列表框。理想情况下,我想在没有回发的情况下这样做。

有什么办法可以实现吗?

谢谢,

杰森

3 个答案:

答案 0 :(得分:2)

我很快就嘲笑了你。

<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 :(得分:1)

如果你真的不想回帖,那么必须使用javascript或其他方法在客户端以某种方式完成。如果你想要完成一个回帖的外观,这可以使用updatepanel来完成。

答案 2 :(得分:0)

首先,如果你不想要回发,它会变得复杂。是否有理由避免回发?

但是,如果您不希望回发,则有2个选项:

  1. 使用网络方法。在您的页面上创建一个静态方法并使用WebMethod属性进行装饰。
  2. 另一个IHttpHandler。创建IHttpHandler的实现并覆盖ProcessRequest
  3. 对于这两个操作,您将需要使用AJAX来查询服务器(Web方法或http处理程序)。您不能使用MS AJAX,因为它会导致部分回发。使用jQuery来执行请求。

    请注意,UpdatePanel使用MS AJAX,因此会导致部分回发。