65.9K
CodeProject 正在变化。 阅读更多。
Home

AJAX 股票符号下拉列表

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.72/5 (10投票s)

2007年7月10日

GPL3

2分钟阅读

viewsIcon

73433

downloadIcon

757

从 MS SQL 数据库查找大量股票符号列表

引言

Screenshot - screenshot.gif

这个 ASP.NET 用户控件可以帮助用户从下拉列表中选择/挑选一个有效的股票代码,而不会影响网页性能。

用户只需输入股票代码的前几个字母,就会在下拉列表中显示首字母匹配的股票代码列表。用户可以从下拉列表中选择筛选后的股票代码。

背景

最近,有超过 10,000 个股票代码,如果将所有股票代码加载并显示在下拉列表中,会影响 MS SQL 和 ASP 页面的性能。用户也很难从庞大的下拉列表中找到股票代码。因此,应该根据用户输入的股票代码的首字母显示一个受限的列表。

使用代码

运行示例

下载后,将 StockPicker.zip 解压到一个文件夹"

1) 在 SQL Server Management Studio 中创建一个数据库,例如 BlueVision

2) 在 SQL Server Management Studio 中运行脚本 \App_Data\populatedata.sql

3) 修改 web.config

<add name="LocalSqlServer" connectionString="Data Source=(local);Integrated Security=True; database=BlueVision"/>

4) 创建一个虚拟目录:StockPicker,指向 StockPicker 文件夹

5) 在浏览器中输入:https:///StockPicker/default.aspx

重用用户控件

1. 按照上述说明创建数据库并加载数据。

2. 将 UserControls 文件夹复制到您的网站

2. 在您希望显示 stockpicker 控件的 aspx 页面中添加以下行

<%@ REGISTER SRC="~/UserControls/StockPicker.ascx" TAGNAME="StockPicker" TAGPREFIX="Evisional" %>

3. 在您希望显示该控件的位置添加以下行

<Evisional:STOCKPICKER ID="StockPicker1" RUNAT="server" />

4. 要在提交事件中获取选定的值/代码,您可以使用

StockPicker1.ExchangeID : 交易所ID
StockPicker1.StockCode : 股票代码/符号
StockPicker1.StockID : 数据库中的股票ID

关注点

您会注意到股票代码是根据用户输入的首字母进行过滤的。我使用 iframe(命名为 stockList)来刷新股票代码,而不是使用 ASP.NET AJAX 技术。

当触发 _StockCode 文本框和 _ExchangeId 下拉列表的 onKeyUp 事件时,stockList iframe 的 src 属性将按如下方式更改

1) StockPicker.ascx 中的 Iframe 控件

<ASP:HIDDENFIELD ID=_StockId RUNAT="server" />
<table>
<tr>
<td>
<ASP:DROPDOWNLIST id=_ExchangeId RUNAT="server" DATASOURCEID="SQLExchangeSource"
DATATEXTFIELD="ExchangeName" DATAVALUEFIELD="ExchangeID">
</ASP:DROPDOWNLIST>
<td>
<ASP:TEXTBOX id=_StockCode width=100px RUNAT="server" /><br>
<span style="position:absolute">
<iframe id="_StockList" frameborder="0" scrolling=auto src="<%=request.ApplicationPath%>/UserControls/StockPicker.aspx" 
style="position:relative;top:0; left:0; width:400px; height:150px; background: #ffffff; display:none; border: 1px solid #222222"></iframe>
</span>
</td>
</tr>
</table>

2) StockPicker.ascx 的 JavaScript
function onKeyUp() { 
       
    var exchangeID = document.getElementById('<%=_ExchangeId.ClientID %>').value;
    var stockCode = document.getElementById('<%=_StockCode.ClientID %>').value;
    var stockList = document.getElementById('_StockList');
                 
  if (stockCode.value!='NaN') { 
     stockList.src='http://www.yourdomain.com/UserControls/StockPicker.aspx?t=1&ExchangeId='+
     exchangeID+'&StockCode='+stockCode; stockList.style.display='block';  
  } 
   else stockList.style.display='none'; 
 
} 

3) 在 StockPicker.ascx.vb 的 onload 事件中,为 _StockCode_ExchangeId 分配 onKeyUp 事件

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   
    SQLExchangeSource.SelectCommand = "SELECT * FROM StockExchange"
    _ExchangeId.DataBind()
    _ExchangeId.SelectedValue = 1

    _StockCode.Attributes("onkeyup") = "onKeyUp();"
    _ExchangeId.Attributes("onchange") = "onKeyUp();"


End Sub

上市公司/股票代码列表

对于想知道我从哪里获得股票代码列表的人:我在 Google 上搜索了关键词“上市公司”并找到了

美国股票列表http://www.nasdaq.com/reference/comlookup.stm#viewdownload

澳大利亚股票列表http://www.afrsmartinvestor.com.au/tables.aspx
http://www.asx.com.au/asx/downloadCsv/ASXListedCompanies.csv

英国: http://www.londonstockexchange.com/en-gb/pricesnews/statistics/listcompanies/

瑞士http://www.swx.com/admission/listing/equity_market/download/issuers_equity_market_en.csv

如果有人知道其他列表,请发表评论。我会更新此列表。

© . All rights reserved.