我試圖從複選框列表中將所選項目添加到按鈕單擊列表框中。我可以通過使用以下來實現:從字符串列表中添加和刪除項目,只有在項目不存在的情況下才會添加
protected void AddSelectedField(object sender, EventArgs e)
{
foreach (ListItem column in ColumnsList.Items)
{
if (column.Selected)
{
SelectedColumns.Add(column.Text);
}
}
foreach (String column in SelectedColumns)
{
SelectedFieldsList.Items.Add(column);
}
}
然而,與此有關的問題是,用戶仍然可以添加同一項目的回傳後發生,他們已經選定。我試過以下,但這並不甚至添加所選項目到ListBox了:
protected void AddSelectedField(object sender, EventArgs e)
{
foreach (ListItem column in ColumnsList.Items)
{
if (column.Selected)
{
foreach (String item in SelectedColumns)
{
if (item != column.Text || SelectedColumns != null)
{
SelectedColumns.Add(column.Text);
}
}
}
}
foreach (String column in SelectedColumns)
{
SelectedFieldsList.Items.Add(column);
}
}
另外,我還需要添加功能,允許用戶通過該循環,以從列表中刪除項目列表框中的選定項目。我已經試過這樣:
protected void RemoveSelectedField(object sender, EventArgs e)
{
foreach (ListItem field in SelectedFieldsList.Items)
{
if (field.Selected)
{
SelectedColumns.Remove(item);
}
}
foreach (String field in SelectedColumns)
{
SelectedFieldsList.Items.Add(field);
}
}
除了:
protected void RemoveSelectedField(object sender, EventArgs e)
{
foreach (ListItem field in SelectedFieldsList.Items)
{
if (field.Selected)
{
foreach (String item in SelectedColumns)
{
if (item == field.Text)
{
SelectedColumns.Remove(item);
}
}
}
}
foreach (String field in SelectedColumns)
{
SelectedFieldsList.Items.Add(field);
}
}
這些都不刪除從列表框中米選定的項目(和我假設的字符串列表以及)。在問候檢查,看看是否存在我也試過正在已添加的項:
protected void AddSelectedField(object sender, EventArgs e)
{
foreach (ListItem column in ColumnsList.Items)
{
if (column.Selected && !SelectedColumns.Contains(column.Text))
{
SelectedColumns.Add(column.Text);
}
}
foreach (String column in SelectedColumns)
{
SelectedFieldsList.Items.Add(column);
}
}
而且就好像它忽略if語句的第二部分是檢查是否列表包含當前列出項目的文本。
您是否試過[HashSet](http://msdn.microsoft.com/zh-cn/library/bb359438.aspx)而不是List?這是一個不允許重複的數據結構。 –
剛剛嘗試過,它也做同樣的事情。我認爲它再次添加它的事實可能是由於方法底部的foreach,它將項目添加到SelectedFieldsList(列表框控件)。 –
@TonyBarsotti嗯,看着你最後的方法'保護無效AddSelectedField(對象發件人,EventArgs e)'似乎應該做你想做的 - 只添加不存在的列。你能展示你如何聲明'SelectedColumns'? – Leron