2012-08-01 147 views
0

根据另一个下拉列表中定义的值,将下拉列表获取到数据绑定时遇到了一些麻烦。通过另一个下拉列表中的值填充下拉列表ASP.NET

Protected Sub CategoryDDL_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CategoryDDL.SelectedIndexChanged 
    qaDDL.Items.Clear() 
    qaDDL.Items.Insert(0, New ListItem("(New Question)")) 

    If CategoryDDL.SelectedValue = "(New Category)" Then 
     CategoryName.Text = Nothing 
    Else 
     Dim filter As String = "categoryID = '" + CategoryDDL.SelectedValue.ToString() + "'" 
     Dim dv As DataView = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), DataView) 
     dv.RowFilter = filter 
     For Each drv As DataRowView In dv 
      CategoryName.Text = drv("Name").ToString() 
     Next 

我已经试过什么类同材料填充一个文本框,但我不知道怎么用这个数组。

dv = CType(SqlDataSource2.Select(DataSourceSelectArguments.Empty), DataView) 
     For Each drv As DataRowView In dv 
      qaDDL.Items.Insert(drv("placement").ToString(), drv("Question").ToString()) 
     Next 
    End If 
End Sub 

我也尝试过使用一个简单的数据绑定用asp:由DataSourceID的

qaDDL.Databind() 

这里的页面的样子连接下拉列表。

<asp:DropDownList runat="server" ID="CategoryDDL" DataSourceID="SqlDataSource1" Width="300px" DataTextField="Name" DataValueField="categoryID" AppendDataBoundItems="True" AutoPostBack="True" > 
      <asp:ListItem Value="(New Category)">(New Category)</asp:ListItem> 
     </asp:DropDownList> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings%>" SelectCommand="SELECT categoryID, Name, placement FROM FAQ_category ORDER BY placement"></asp:SqlDataSource> 

<asp:DropDownList runat="server" ID="qaDDL" Width="300px" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="Question" DataValueField="faqID"> 
      <asp:ListItem Value="(New Question)">(New Question)</asp:ListItem> 
     </asp:DropDownList> 
     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings%>" SelectCommand="SELECT faqID, categoryID, Question, Answer FROM FAQ WHERE (categoryID = @categoryID) ORDER BY placement"> 

那么做这类任务的最好方法是什么?

+0

我认为html.dropdownlist的标记可能不正确 – Paparazzi 2012-08-01 20:12:05

回答

0

最好的办法可能是主观的,但我建议最简单的方式是使用AjaxControlToolkit的CascadingDropDownList扩展的控制,因为它可以节省您的回传,很多工作已经为你做。

+0

它对SQL数据库有效吗?我尽管它与XML功能。 – Quinson 2012-08-01 22:37:02

+0

@Quinson在网站上有一个[walkthrough](http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Walkthrough/CCDWithDB.aspx),用于将它连接到SQL数据库。我是通过为你写一些演示代码的中途,今晚才能完成它,但是...... – PhilPursglove 2012-08-02 09:25:58

相关问题