如何根据之前在 asp.net c# 中更改的下拉数据更改下拉列表?
How change the dropdown according to the previous dropdown data changed in asp.net c#?
我分别有 5 个下拉候选人姓名、供应商姓名、客户姓名、职位。我想如果候选人姓名随候选人姓名而变化,则所有其他列都应相应更改。
注意:所有下拉列表均直接取自数据库列。
这里我调用了aspx页面中的所有列:
<asp:DropDownList CssClass="form-control select2"
data-placeholder="Choose Consultant..." TabIndex="-1"
aria-hidden="true" ID="dd_consultantName" runat="server"
DataSourceID="SqlDataSource1" DataTextField="candidatename"
DataValueField="candidatename"
OnTextChanged="dd_consultantName_TextChanged" AutoPostBack="true">
<asp:ListItem class="text-muted">
--Choose Candidate Name--
</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:connectiontest %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [candidatename] FROM [tb_test] WHERE ([mail] = @mail )">
<SelectParameters>
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
</SelectParameters>
</asp:SqlDataSource>
在这里我得到了所有的候选名称,我正在调用所有的文件,比如供应商名称客户名称 etc.in 我已经使用了 ontextchange 事件,它正在刷新页面,但是通过错误就像“System.IndexOutOfRangeException:供应商名称”。
这是我分享的代码:
public void getcandidatename()
{
SqlConnection con = new SqlConnection(connection);
con.Open();
SqlCommand cmd = new SqlCommand("sp_testing", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@type", "selectcandidatename");
cmd.Parameters.AddWithValue("@mail", Session["mail"]);
cmd.Parameters.AddWithValue("@candidatename", dd_consultantName.SelectedItem.Text);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
dd_vendorname.SelectedItem.Text = dr["vendorname"].ToString();
dd_clientname.SelectedItem.Text = dr["clientname"].ToString();
dd_companyname.SelectedItem.Text = dr["companyname"].ToString();
dd_jobtitle.SelectedItem.Text = dr["jobtitle"].ToString();
}
}
dr.Close(); con.Close();
SqlConnection.ClearAllPools();
}
在这里我应该得到相应候选人姓名的数据,但问题是我无法得到数据请帮助我。
我想在 asp.net c# 中使用它,如果有人可以提供帮助,我将非常感谢 him/her
谢谢
请无视我的英语不好
这是来自我的数据库的查询
select candidatename from tb_testcandidates where mail=@mail and candidate is not null
我能理解的是,如果您想更改一个或多个下拉列表,无需 C# 代码即可完成,只需使用 SqlDataSource
并指定查询或存储过程以及参数和下拉列表的关联,我会举一个例子来练习你的问题:
ASPX代码:
<asp:DropDownList ID="DropDownListConsultant" runat="server" AutoPostBack="true"
CssClass="form-control select2" data-placeholder="Choose Consultant..." TabIndex="-1" aria-hidden="true"
DataSourceID="SqlDataSource1" DataTextField="candidatename" DataValueField="candidate_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [candidate_id], [candidatename] FROM [tb_test] WHERE [mail] = @mail;">
<SelectParameters>
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownListVendor" runat="server" AutoPostBack="true" CssClass="form-control select2"
aria-hidden="true" data-placeholder="Choose Consultant..." TabIndex="-1"
DataSourceID="SqlDataSource2" DataTextField="vendorname" DataValueField="vendor_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
ProviderName="System.Data.SqlClient"
SelectCommand="EXEC sp_testing @type, @mail, @candidatename;">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownListConsultantName" Name="candidatename" DefaultValue="" PropertyName="SelectedItem" />
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
<asp:Parameter DefaultValue="selectcandidatename" Name="type" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownListClient" runat="server" AutoPostBack="true" CssClass="form-control select2"
aria-hidden="true" data-placeholder="Choose Consultant..." TabIndex="-1"
DataSourceID="SqlDataSource3" DataTextField="clientname" DataValueField="client_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
ProviderName="System.Data.SqlClient"
SelectCommand="EXEC sp_testing @type, @mail, @candidatename;"> // Other procedure? or include all columns in the same procedure
<SelectParameters>
<asp:ControlParameter ControlID="DropDownListConsultantName" Name="candidatename" DefaultValue="" PropertyName="SelectedItem" />
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
<asp:Parameter DefaultValue="selectcandidatename" Name="type" />
</SelectParameters>
</asp:SqlDataSource>
如您所见,DropDownListVendor
和 DropDownListClient
元素使用相同的存储过程来捕获信息,具体取决于在 DropDownListConsultant
元素中选择的内容,并使用不同的列来自查询(而不是对 DropdownList 使用不同的存储过程)。这就是我在您的代码示例中看到的内容。
如果有效,请告诉我,希望对您有所帮助!
我分别有 5 个下拉候选人姓名、供应商姓名、客户姓名、职位。我想如果候选人姓名随候选人姓名而变化,则所有其他列都应相应更改。 注意:所有下拉列表均直接取自数据库列。
这里我调用了aspx页面中的所有列:
<asp:DropDownList CssClass="form-control select2"
data-placeholder="Choose Consultant..." TabIndex="-1"
aria-hidden="true" ID="dd_consultantName" runat="server"
DataSourceID="SqlDataSource1" DataTextField="candidatename"
DataValueField="candidatename"
OnTextChanged="dd_consultantName_TextChanged" AutoPostBack="true">
<asp:ListItem class="text-muted">
--Choose Candidate Name--
</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:connectiontest %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [candidatename] FROM [tb_test] WHERE ([mail] = @mail )">
<SelectParameters>
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
</SelectParameters>
</asp:SqlDataSource>
在这里我得到了所有的候选名称,我正在调用所有的文件,比如供应商名称客户名称 etc.in 我已经使用了 ontextchange 事件,它正在刷新页面,但是通过错误就像“System.IndexOutOfRangeException:供应商名称”。
这是我分享的代码:
public void getcandidatename()
{
SqlConnection con = new SqlConnection(connection);
con.Open();
SqlCommand cmd = new SqlCommand("sp_testing", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@type", "selectcandidatename");
cmd.Parameters.AddWithValue("@mail", Session["mail"]);
cmd.Parameters.AddWithValue("@candidatename", dd_consultantName.SelectedItem.Text);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
dd_vendorname.SelectedItem.Text = dr["vendorname"].ToString();
dd_clientname.SelectedItem.Text = dr["clientname"].ToString();
dd_companyname.SelectedItem.Text = dr["companyname"].ToString();
dd_jobtitle.SelectedItem.Text = dr["jobtitle"].ToString();
}
}
dr.Close(); con.Close();
SqlConnection.ClearAllPools();
}
在这里我应该得到相应候选人姓名的数据,但问题是我无法得到数据请帮助我。 我想在 asp.net c# 中使用它,如果有人可以提供帮助,我将非常感谢 him/her 谢谢
请无视我的英语不好
这是来自我的数据库的查询 select candidatename from tb_testcandidates where mail=@mail and candidate is not null
我能理解的是,如果您想更改一个或多个下拉列表,无需 C# 代码即可完成,只需使用 SqlDataSource
并指定查询或存储过程以及参数和下拉列表的关联,我会举一个例子来练习你的问题:
ASPX代码:
<asp:DropDownList ID="DropDownListConsultant" runat="server" AutoPostBack="true"
CssClass="form-control select2" data-placeholder="Choose Consultant..." TabIndex="-1" aria-hidden="true"
DataSourceID="SqlDataSource1" DataTextField="candidatename" DataValueField="candidate_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [candidate_id], [candidatename] FROM [tb_test] WHERE [mail] = @mail;">
<SelectParameters>
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownListVendor" runat="server" AutoPostBack="true" CssClass="form-control select2"
aria-hidden="true" data-placeholder="Choose Consultant..." TabIndex="-1"
DataSourceID="SqlDataSource2" DataTextField="vendorname" DataValueField="vendor_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
ProviderName="System.Data.SqlClient"
SelectCommand="EXEC sp_testing @type, @mail, @candidatename;">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownListConsultantName" Name="candidatename" DefaultValue="" PropertyName="SelectedItem" />
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
<asp:Parameter DefaultValue="selectcandidatename" Name="type" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownListClient" runat="server" AutoPostBack="true" CssClass="form-control select2"
aria-hidden="true" data-placeholder="Choose Consultant..." TabIndex="-1"
DataSourceID="SqlDataSource3" DataTextField="clientname" DataValueField="client_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
ProviderName="System.Data.SqlClient"
SelectCommand="EXEC sp_testing @type, @mail, @candidatename;"> // Other procedure? or include all columns in the same procedure
<SelectParameters>
<asp:ControlParameter ControlID="DropDownListConsultantName" Name="candidatename" DefaultValue="" PropertyName="SelectedItem" />
<asp:SessionParameter DefaultValue="mail" Name="mail" SessionField="mail" />
<asp:Parameter DefaultValue="selectcandidatename" Name="type" />
</SelectParameters>
</asp:SqlDataSource>
如您所见,DropDownListVendor
和 DropDownListClient
元素使用相同的存储过程来捕获信息,具体取决于在 DropDownListConsultant
元素中选择的内容,并使用不同的列来自查询(而不是对 DropdownList 使用不同的存储过程)。这就是我在您的代码示例中看到的内容。
如果有效,请告诉我,希望对您有所帮助!