C# ASP.NET在不回发的情况下填充列表框

C# ASP.NET在不回发的情况下填充列表框,c#,sql,asp.net,listbox,linkbutton,C#,Sql,Asp.net,Listbox,Linkbutton,我有一个简单的aspx页面,带有文本框、链接按钮和列表框 列表框将由SQL数据库中存储过程中的值填充 我想做的是,当用户单击linkbutton时,用这些变量填充listbox。理想情况下,我希望这样做没有回发 有什么办法可以做到这一点吗 谢谢 Jason如果你真的不想回复帖子,那么必须在客户端使用javascript或其他方法进行回复。如果您希望在不显示回发帖的情况下完成此操作,可以使用 我很快为你做了一个模型 <form id="form1" runat="server"> &

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

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

我想做的是,当用户单击linkbutton时,用这些变量填充listbox。理想情况下,我希望这样做没有回发

有什么办法可以做到这一点吗

谢谢


Jason

如果你真的不想回复帖子,那么必须在客户端使用javascript或其他方法进行回复。如果您希望在不显示回发帖的情况下完成此操作,可以使用

我很快为你做了一个模型

<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>
当然,您会将SqlDataSource更改为存储过程,但当您单击按钮时,它将填充该列表,而无需回发。如果你还需要什么,请告诉我


-JJ

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

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

  • 使用web方法。在页面上创建一个静态方法,并用WebMethod属性修饰它
  • 另一个伊特芬德尔。创建IHttpHandler的实现并重写ProcessRequest
  • 对于这两个操作,您都需要使用AJAX查询服务器(web方法或http处理程序)。您不能使用MS AJAX,因为它将导致部分回发。使用jQuery执行请求

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

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