禁用DropDownList中的值

时间:2013-04-23 09:23:38

标签: c# drop-down-menu

我有一个下拉列表,我在其中选择人名。但是我需要禁用使用的值,因为我希望在事件的同一个id中有两个相同的值...在数据库中我使用compoud键修复了问题,但我需要以编程方式解决这个问题。

这是我较短的数据来源:

<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:fotbalConnectionString %>"
    SelectCommand="SELECT table1.ID_person, table1.ID_event,FROM [table1] WHERE ([ID_event] = @ID_event)        
    <SelectParameters>
        <asp:QueryStringParameter 
            DefaultValue="0" 
            Name="ID_event" 
            QueryStringField="id" 
            Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>

1 个答案:

答案 0 :(得分:0)

您可以创建哈希,其键将是您在dropDownList中拥有的值的标识符值将是布尔值将表明它是否已被使用。

您需要一种更新哈希的方法,因此每当您从DDL(dropDownList)中选择一些项目时,您都将其标记为已使用(如果是这种情况)。您可以从SelectedIndexChanged事件中调用此方法。

还需要一种方法来从你的DDL的Hash中列出值(键),你只需要取消选择(value == false)项目。

存储数据的属性可能有这样的getter:

private Hashtable SelectedValuesHash        
{
        get
        {
            object o = ViewState["SelectedValuesHash"];

            if (o == null)
                return new Hashtable();
            else
                return (Hashtable)o;
        }
    }

添加值的方法可以是这样的:

 private void AddSelectedValuesToHash(int key, bool hasBeenSelected)
    {
        var rows = ViewState["SelectedValuesHash"] as Hashtable;

        if (rows == null)
        {
            rows = new Hashtable();
            ViewState["SelectedValuesHash"] = rows;
        }
        rows.Add(key, hasBeenSelected);
    }