【发布时间】:2011-06-13 17:31:59
【问题描述】:
我有一个带有文本框、链接按钮和列表框的简单 aspx 页面。
列表框将填充来自 SQL 数据库中存储过程的值。
不知何故,我想做的是在用户单击链接按钮时用这些变量填充列表框。理想情况下,我希望在没有回发的情况下执行此操作。
有什么办法可以做到吗?
谢谢,
杰森
【问题讨论】:
标签: c# sql asp.net listbox linkbutton
我有一个带有文本框、链接按钮和列表框的简单 aspx 页面。
列表框将填充来自 SQL 数据库中存储过程的值。
不知何故,我想做的是在用户单击链接按钮时用这些变量填充列表框。理想情况下,我希望在没有回发的情况下执行此操作。
有什么办法可以做到吗?
谢谢,
杰森
【问题讨论】:
标签: c# sql asp.net listbox linkbutton
我很快就为你设计了一个。
<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
【讨论】:
如果您真的不想要回帖,则必须使用 javascript 或其他方法在客户端以某种方式完成。如果您希望在不出现回帖的情况下完成此操作,可以使用updatepanel 来完成。
【讨论】:
首先,如果您不想回发,它会变得复杂。是否有理由避免回发?
但是,如果您不想回发,您有 2 个选项:
对于这两个操作,您都需要使用 AJAX 来查询服务器(网络方法或 http 处理程序)。您不能使用 MS AJAX,因为它会导致部分回发。使用 jQuery 来做请求。
请注意,UpdatePanel 使用 MS AJAX,因此会导致部分回发。
【讨论】: