我有一个下拉列表,我在其中选择人名。但是我需要禁用使用的值,因为我希望在事件的同一个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>
答案 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);
}