ASP.NET Dropdownlist控件参数问题

时间:2012-08-08 19:17:54

标签: asp.net sql drop-down-menu parameters guid

所以我有两个下拉列表,第一个包含来自数据源的项目,其值为GUID和静态项目。

<asp:DropDownList runat="server" ID="CategoryDDL" DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="categoryID" AutoPostBack="True" AppendDataBoundItems="True" >
     <asp:ListItem Value="(Select Category)">(New Category)</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionString%>" SelectCommand="SELECT categoryID, Name FROM category"></asp:SqlDataSource>

其他下拉列表非常类似,但作为控件参数设置读取第一个值,并再次包含静态项。

<asp:DropDownList runat="server" ID="itemDDL" DataSourceID="SqlDataSource2" DataTextField="item" DataValueField="itemID">
      <asp:ListItem Value="(Select Item)">(New Question)</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionString%>" SelectCommand="SELECT itemID, categoryID, item FROM Items WHERE (categoryID = @categoryID)">
    <SelectParameters>
            <asp:ControlParameter ControlID="CategoryDDL" Name="categoryID" PropertyName="SelectedValue" />
      </SelectParameters>
</asp:SqlDataSource>

如果第二个值中不存在第一个值,我怎样才能让下拉列表忽略第一个值的值。或者更好的是,有没有办法可以从代码中调用SQL数据源并填充下拉列表?

2 个答案:

答案 0 :(得分:1)

OnSelecting="SqlDataSource2_Selecting"添加到第二个Dropdownlist,以便在无法获得有效GUID时取消选择命令。

Dim GUIDRef As Guid

Protected Sub SqlDataSource2_Selecting(sender As Object, e As SqlDataSourceSelectingEventArgs) Handles SqlDataSource2.Selecting
    If Not Guid.TryParse(CategoryDDL.SelectedValue, GUIDRef) Then
        e.Cancel = True
    End If

End Sub

答案 1 :(得分:0)

我还没有清楚地理解你的问题,但我认为你必须使用你的下拉列表中的SelectedIndexChanged

private void itemDDL_SelectedIndexChanged()
{
      // check the item in the first dropdown and do your work
}