ASP.NET 在没有回发的情况下填充列表框

发布于 2024-11-15 00:07:47 字数 183 浏览 4 评论 0原文

我有一个简单的 aspx 页面,其中包含文本框、链接按钮和列表框。

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

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

有什么办法可以实现这一点吗?

谢谢,

杰森

I have a simple aspx page with a textbox, linkbutton and listbox.

The listbox is to be populated with values from a stored procedure in a SQL database.

What I'd like to do, somehow, is to populate the listbox with those variables when the user clicks the linkbutton. Ideally, I'd like to do this WITHOUT a postback.

Is there any way this can be accomplished?

Thanks,

Jason

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

べ繥欢鉨o。 2024-11-22 00:07:47

我很快就为你模拟了一个。

<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

I mocked one up for you really quickly.

<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>

On the code behind:

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

Of course you would change the SqlDataSource to your stored proc, but when you clicked the button, it would populate that list without a postback. Let me know if you need anything else.

-JJ

无悔心 2024-11-22 00:07:47

如果您确实不想发回帖子,那么必须使用 javascript 或其他方法在客户端上以某种方式完成。如果您希望在不出现回发的情况下完成此操作,可以使用 更新面板

If you truly don't want a post back then it must be done somehow on the client using javascript or some other method. If you want it to be done with out the appearance of a post back this can be accomplished using a updatepanel.

蓝颜夕 2024-11-22 00:07:47

首先,如果您不想回发,事情就会变得复杂。有理由避免回发吗?

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

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

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

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

First of all, if you do not want postback, it get complicated. Is there a reason to avoid postback?

If however, you do not want postback you have 2 options:

  1. Use web methods. On your page create a static method and decorate it with WebMethod attribute.
  2. Another IHttpHandler. Create an implementation of IHttpHandler and override ProcessRequest

For both actions, you will need to use AJAX to query the server (either the web method, or the http handler). You cannot use the MS AJAX because it will cause a partial postback. Use jQuery to do the request.

Note that the UpdatePanel uses MS AJAX and therefore will cause a partial postback.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文