我试图在编辑模式下使用下拉列表填充我的gridview列之一。但是它显示了一个重复的项目,它是编辑模式之前该行的原始值。如何在编辑模式的下拉列表中删除重复的项目?
普通模式:
http://i.imgur.com/ReqIvZN.jpg
编辑模式:
http://i.imgur.com/3PjXJhN.jpg
这些是我的代码:
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
DataRowView drv = e.Row.DataItem as DataRowView;
DropDownList ddl = (DropDownList)e.Row.FindControl("ddl");
ddl.DataTextField = "Name";
ddl.DataValueField = "CategoryID";
ddl.DataSource = Seminar_ListDB.getAllSemList();
ddl.DataBind();
//ddl.SelectedValue = drv["CategoryID"].ToString();
}
}
答案 0 :(得分:0)
使用:
ddl.Items.Clear();
在绑定下拉列表之前。
<强> EDIT2:强>
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
DataRowView drv = e.Row.DataItem as DataRowView;
DropDownList ddl = (DropDownList)e.Row.FindControl("ddl");
ddl.DataTextField = "Name";
ddl.DataValueField = "CategoryID";
ddl.Items.Clear();//add this line
ddl.DataSource = Seminar_ListDB.getAllSemList();
ddl.DataBind();
ddl.SelectedValue = drv["CategoryID"].ToString();
}
}
<强> EDIT1:强>
DropDownList.SelectedValue="Your_Value"
or
Dropdownlist.Items.FindByValue("Your_Value").Selected = true;
or
DropDownList.SelectedValue = DropDownList.Items.FindByText("Your_Text").Value;
or
Dropdownlist.SelectedItem.Text="Your_Text";
从DropDownList隐藏项目:
var item = DropDownList1.Items.Select(p=>p.value == Your_Value).first();
DropDownList1.Remove(item);
or
DropDownList1.Items.Remove(DropDownList1.Items.FindByValue("02"));
答案 1 :(得分:0)
在getAllSemList()
的查询中,您可以使用DISTINCT
查询,例如:
SELECT DISTINCT columns
FROM table_name
WHERE where_conditions
因此,即使您的表中有多个条目,它也只会该行的一个副本。这样,您的下拉列表不会多次显示相同的列值!
编辑1:
您可以使用另一个查询,该查询不会在表格中插入重复的条目:
INSERT IGNORE INTO TableName (Column1, Column2) VALUES('Value1' , 'Value2')
此外,如果您只有一行的dropwdowns,那么您只需按
进行更新obj.COl1 = ddl1.SelectedValue.ToString();
obj.COL2 = ddl2.SelectedValue.ToString();
obj.COL3 = ddl3.SelectedValue.ToString();
在更新查询中,您只能将整个对象传递为:
public int Update(MyClass obj){
//update query
UPDATE Table1 set Col1 = @col1value, Col2 = @col2value...
WHERE *condition*
}
编辑2:
Here是您需要与包含CatName
的下拉列表的数据源绑定的sql小提琴。
查询返回CategoryName
和CategoryID
,您应该做的是:
dropdown.DataTextField = "CatName";
dropdown.DataValueField = "CategoryID";
。 。 。 。 在更新时执行此操作,您将有一个要更新的类别ID!