如何使用在运行时绑定了connectionstring的sqldatasource填充Asp.net下拉列表?
所以,我一直在与这个问题斗争,时间比我想承认的要长,而且似乎找不到关于我做错了什么的信息。因此,我谦虚地提出这个问题 我有两个下拉列表和数据源,定义如下:如何使用在运行时绑定了connectionstring的sqldatasource填充Asp.net下拉列表?,asp.net,sql-server,vb.net,Asp.net,Sql Server,Vb.net,所以,我一直在与这个问题斗争,时间比我想承认的要长,而且似乎找不到关于我做错了什么的信息。因此,我谦虚地提出这个问题 我有两个下拉列表和数据源,定义如下: <asp:DropDownList ID="ddAdminYear" runat="server" enabled="false" DataTextField="YEAR_ID" DataValueField="YEAR_ID" AutoPostBack="True" AppendDataBoundItems="true"&g
<asp:DropDownList ID="ddAdminYear" runat="server" enabled="false" DataTextField="YEAR_ID" DataValueField="YEAR_ID" AutoPostBack="True" AppendDataBoundItems="true">
<asp:ListItem Text="----------" Value="----------" /></asp:DropDownList>
<asp:SqlDataSource ID="sdsAdminDistinctYr" runat="server"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT DISTINCT YEAR_ID FROM PC_YEAR ORDER BY YEAR_ID" DataSourceMode="DataReader"></asp:SqlDataSource>
<asp:DropDownList ID="tbOneUnit" runat="server" AutoPostBack="True"
DataTextField="LONG_DESC" DataValueField="SHORT_DESC_EN" AppendDataBoundItems="True" Enabled="True">
<asp:ListItem Text="----------" Value="----------" /></asp:DropDownList>
<asp:SqlDataSource ID="sdsAdminMunic" runat="server" Onselecting="eventselect" ProviderName="System.Data.SqlClient" SelectCommand="GET_MUNIC_LISTING_VB" SelectCommandType="StoredProcedure" >
<SelectParameters>
<asp:controlparameter DefaultValue="2017" Name="year" controlid="ddAdminYear" propertyname="SelectedValue"/>
<asp:Parameter DefaultValue="default" Name="region" Type="String"/>
<asp:Parameter DefaultValue="default" Name="u_r" Type="String"/>
<asp:Parameter DefaultValue="default" Name="UserGroup" Type="String"/>
</SelectParameters>
</asp:SqlDataSource>
然后,在ddAdminYear的select事件处理程序中,我为tbOneUnit设置了如下数据源:
sdsAdminMunic.ConnectionString = _user.SelectedDBConn
tbOneUnit.DataSourceID = "sdsAdminMunic"
tbOneUnit.DataBind()
ddAdminYear下拉列表将填充,但tbOneUnit下拉列表不会填充
如何使用基于ddAdminYear值的存储过程来填充tbOneUnit下拉列表
编辑:
我无法发布存储过程本身,但下面是标题:
[dbo].[GET_MUNIC_LISTING_VB] (
@YEAR smallint,
@REGION as varchar(5) = NULL,
@U_R as varchar(2) = NULL,
@USERGROUP as varchar(10) = NULL)
我可以验证它是否返回数据。
如果还有什么可以帮忙的,请告诉我
编辑2:
存储过程正在运行,但默认值将作为我指定的字符串传递。。。所以,这不是我想做的。
现在,该应用程序将通过以下内容:
exec GET_MUNIC_LISTING_VB @year=N'2017',@region=N'default,N'@u_r=N'default',@UserGroup=N'default'
对于应用程序,我希望它通过:
exec GET_MUNIC_LISTING_VB@year=N'2017'、@region=default、@u_r=default、@UserGroup=default我会根据两个下拉列表中所有可能的数据组合所需的数据量,采用两种方法之一解决问题 如果ddAdminYear的值数量有限,我将为每个值创建一个tbOneUnit,然后使用一些javascript根据所选值动态显示或隐藏每个下拉列表。您需要创建一个foreach循环和惟一Id或其他标识符,以便识别每个惟一下拉列表
$(document).ready(function() {
$('#ddAdminYear').change(function() {
var adminYear = $(this).val();
$('.tbOneUnit').hide();
$('#tbOneUnit_' + adminYear).show();
});
});
如果上面的解决方案有太多的数据,那么另一个解决方案是在每次ddAdminYear更改时创建一个ajax事件,并使用该事件填充tbOneUnit的数据。当然,这需要您在服务器上编写一个方法,该方法将根据ddAdminYear的当前值返回tbOneUnit的正确数据
$(document).ready(function() {
$('#ddAdminYear').change(function() {
var adminYear = $(this).val();
var get = $.ajax('/GetTbData', adminYear);
get.done(function(data) {
// take data and add to drop down here
});
});
});
根据两个下拉列表中所有可能的数据组合所需的数据量,我将采用两种方法之一来解决这个问题 如果ddAdminYear的值数量有限,我将为每个值创建一个tbOneUnit,然后使用一些javascript根据所选值动态显示或隐藏每个下拉列表。您需要创建一个foreach循环和惟一Id或其他标识符,以便识别每个惟一下拉列表
$(document).ready(function() {
$('#ddAdminYear').change(function() {
var adminYear = $(this).val();
$('.tbOneUnit').hide();
$('#tbOneUnit_' + adminYear).show();
});
});
如果上面的解决方案有太多的数据,那么另一个解决方案是在每次ddAdminYear更改时创建一个ajax事件,并使用该事件填充tbOneUnit的数据。当然,这需要您在服务器上编写一个方法,该方法将根据ddAdminYear的当前值返回tbOneUnit的正确数据
$(document).ready(function() {
$('#ddAdminYear').change(function() {
var adminYear = $(this).val();
var get = $.ajax('/GetTbData', adminYear);
get.done(function(data) {
// take data and add to drop down here
});
});
});
所以,我的问题似乎是,当我想要使用存储过程中定义的默认值时,我正在指定用于执行存储过程的参数 我可以通过注释掉我指定的参数来解决这个问题,只留下ddAdminYear controlParameter。这产生了以下代码:
exec GET_MUNIC_LISTING_VB @year=N'2017'
多亏了所有发表文章并付出努力的人。所以,我的问题似乎是,当我想使用存储过程中定义的默认值时,我指定了执行存储过程的参数 我可以通过注释掉我指定的参数来解决这个问题,只留下ddAdminYear controlParameter。这产生了以下代码:
exec GET_MUNIC_LISTING_VB @year=N'2017'
感谢所有发帖并付出努力的人。您能展示GET_MUNIC_LISTING_VB存储过程吗?您能展示GET_MUNIC_LISTING_VB存储过程吗?