问题描述
我有两个表,即项目组"和项目",在这些表中,我需要按照以下方式发布下拉列表:所有组名都应列在第一个下拉列表中,项目应列在第二个下拉列表中,具体取决于第一个下拉列表中的值下拉.
我知道使用ajax的级联下拉菜单将是简单的方法,我尝试了它,但是我无法理解他们在示例中提到的几个术语.
因此尝试了定期下拉菜单.
我正在使用数据源进行第一次下拉并填充它.
我的问题是我在第一个下拉列表中得到了所需的结果,但是在第二个下拉列表中却得到了重复的值
请让我知道我要去哪里哪里
Hi,
I have two tables, Item group and Items, where in I need to publish the drop downs in such a way that all the group names should be listed in first drop down and items should be listed in second dropdown according to the selected value in first drop down.
I know using cascading dropdown of ajax would be the easy method and I tried it but I am unable to understand few terms they have mentioned in example.
So tried with regular drop down.
I am using datasource for first drop down and populating it .
My problem is I am getting the required result in first dropdown but in second dropdown I am getting duplicate values
please let me know where I am going wrong
<td valign="top" width="100">
</td>
<td align="right" valign="middle" width="200">
<asp:Label ID="lblgroup" runat="server" Font-Bold="True"
Font-Names="Palatino Linotype" Font-Size="Small" Text="Item Group :"></asp:Label>
</td>
<td align="left" height="30" valign="middle" width="200">
<asp:DropDownList ID="ddlgroup" runat="server" DataSourceID="SqlDataSource1"
Font-Bold="False" Font-Names="Palatino Linotype" Font-Size="Small"
Width="150px" AutoPostBack="True" DataTextField="ITEMGROUPNAME"
DataValueField="ITEMGROUPNAME">
</asp:DropDownList>
</td>
<td width="250">
</td>
</tr>
<tr>
<td valign="top" width="100">
</td>
<td align="right" valign="middle" width="200">
<asp:Label ID="lblitem" runat="server" Font-Bold="True"
Font-Names="Palatino Linotype" Font-Size="Small" Text="Item :"></asp:Label>
</td>
<td align="left" height="30" valign="middle" width="200">
<asp:DropDownList ID="ddlitems" runat="server" Font-Names="Palatino Linotype"
Font-Size="Small" AutoPostBack="True" Width="150px">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:conitemstring %>"
SelectCommand="SELECT [ITEMGROUPNAME] FROM [ITEMGROUP]"></asp:SqlDataSource>
.vb页面
以下方法用于根据第一个下拉列表选择的值显示第二个下拉列表
.vb page
This below method is for displaying the second drop down based on first drop downs selected values
Protected Sub ddlgroup_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlgroup.SelectedIndexChanged
ddlitems.Items.Clear()
sqlstr = "Select ITEMGROUPCODE FROM ITEMGROUP WHERE ITEMGROUPNAME='" + ddlgroup.SelectedValue.ToString + "'"
sqlrdr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlstr)
sqlrdr.Read()
sqlstr = "SELECT ITEMMASTER.ITEMCODE,ITEMMASTER.ITEMGROUPCODE,ITEMMASTER.ITEMNAME FROM ITEMMASTER,ITEMGROUP WHERE ITEMMASTER.ITEMGROUPCODE='" + sqlrdr(0).ToString + "'"
sqlrdr.Close()
sqlrdr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlstr)
While (sqlrdr.Read())
ddlitems.Items.Add(sqlrdr(2))
End While
sqlrdr.Close()
End Sub
下面的方法是显示与第二个gridview中所选项目名称相同的现有列
The below method is to display existing columns with the same item name as that of selected in second gridview
Protected Sub ddlitems_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlitems.SelectedIndexChanged
gdvitems.Dispose()
sqlstr = "SELECT ITEMCODE FROM ITEMMASTER WHERE ITEMNAME='" + ddlitems.SelectedValue.ToString + "'"
sqlrdr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlstr)
sqlrdr.Read()
itemid = sqlrdr(0)
sqlrdr.Close()
sqlstr = "SELECT * FROM Item_loyalty_points_master WHERE ITEMCODE='" + itemid.ToString + "'"
sqlcmd = New SqlCommand(sqlstr, sqlconn)
sqladap = New SqlDataAdapter(sqlcmd)
sqlcmd.ExecuteNonQuery()
sqladap.Fill(ds)
'sqldr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlconn)
'While sqldr.Read()
gdvitems.DataSource = ds
'End While
gdvitems.DataBind()
End Sub
推荐答案
.vb页面
以下方法用于根据第一个下拉列表选择的值显示第二个下拉列表
.vb page
This below method is for displaying the second drop down based on first drop downs selected values
Protected Sub ddlgroup_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlgroup.SelectedIndexChanged
ddlitems.Items.Clear()
sqlstr = "Select ITEMGROUPCODE FROM ITEMGROUP WHERE ITEMGROUPNAME='" + ddlgroup.SelectedValue.ToString + "'"
sqlrdr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlstr)
sqlrdr.Read()
sqlstr = "SELECT ITEMMASTER.ITEMCODE,ITEMMASTER.ITEMGROUPCODE,ITEMMASTER.ITEMNAME FROM ITEMMASTER,ITEMGROUP WHERE ITEMMASTER.ITEMGROUPCODE='" + sqlrdr(0).ToString + "'"
sqlrdr.Close()
sqlrdr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlstr)
While (sqlrdr.Read())
ddlitems.Items.Add(sqlrdr(2))
End While
sqlrdr.Close()
End Sub
下面的方法是显示与第二个gridview中所选项目名称相同的现有列
The below method is to display existing columns with the same item name as that of selected in second gridview
Protected Sub ddlitems_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlitems.SelectedIndexChanged
gdvitems.Dispose()
sqlstr = "SELECT ITEMCODE FROM ITEMMASTER WHERE ITEMNAME='" + ddlitems.SelectedValue.ToString + "'"
sqlrdr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlstr)
sqlrdr.Read()
itemid = sqlrdr(0)
sqlrdr.Close()
sqlstr = "SELECT * FROM Item_loyalty_points_master WHERE ITEMCODE='" + itemid.ToString + "'"
sqlcmd = New SqlCommand(sqlstr, sqlconn)
sqladap = New SqlDataAdapter(sqlcmd)
sqlcmd.ExecuteNonQuery()
sqladap.Fill(ds)
'sqldr = SqlHelper.ExecuteReader(sqlconn, CommandType.Text, sqlconn)
'While sqldr.Read()
gdvitems.DataSource = ds
'End While
gdvitems.DataBind()
End Sub
这篇关于使用另一个下拉菜单的选定值分配要动态下拉的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!