使用另一个下拉菜单的选定值分配要动态下拉的值 [英] Assigning values to drop down dynamically using the selected value of another drop down

查看:37
本文介绍了使用另一个下拉菜单的选定值分配要动态下拉的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有两个表,即项目组"和项目",在这些表中,我需要按照以下方式发布下拉列表:所有组名都应列在第一个下拉列表中,项目应列在第二个下拉列表中,具体取决于第一个下拉列表中的值下拉.

我知道使用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">
                            &nbsp;</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">
                            &nbsp;</td>
                    </tr>
                    <tr>
                        <td valign="top" width="100">
                            &nbsp;</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

推荐答案

ConnectionStrings:conitemstring %> " SelectCommand =" 从[ITEMGROUP]中选择[ITEMGROUPNAME]" < >
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


如果问题只是关于重复值,则可以在SQL查询中添加DISTINCT子句(当然,也可以仅选择要使用的单个列).
If the question is just about duplicate values then you can add DISTINCT clause in you SQL query (And of course select just single column that you want to use).


这篇关于使用另一个下拉菜单的选定值分配要动态下拉的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆