【问题标题】:ASP.NET Populate a listbox without a postbackASP.NET 填充没有回发的列表框
【发布时间】:2011-06-13 17:31:59
【问题描述】:

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

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

不知何故,我想做的是在用户单击链接按钮时用这些变量填充列表框。理想情况下,我希望在没有回发的情况下执行此操作。

有什么办法可以做到吗?

谢谢,

杰森

【问题讨论】:

    标签: c# sql asp.net listbox linkbutton


    【解决方案1】:

    我很快就为你设计了一个。

    <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

    【讨论】:

      【解决方案2】:

      如果您真的不想要回帖,则必须使用 javascript 或其他方法在客户端以某种方式完成。如果您希望在不出现回帖的情况下完成此操作,可以使用updatepanel 来完成。

      【讨论】:

        【解决方案3】:

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

        但是,如果您不想回发,您有 2 个选项:

        1. 使用网络方法。在您的页面上创建一个静态方法并使用 WebMethod 属性对其进行装饰。
        2. 另一个 IHttpHandler。创建 IHttpHandler 的实现并覆盖 ProcessRequest

        对于这两个操作,您都需要使用 AJAX 来查询服务器(网络方法或 http 处理程序)。您不能使用 MS AJAX,因为它会导致部分回发。使用 jQuery 来做请求。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多