Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# gridview中dropdownlist编辑模式下的重复项_C#_Asp.net_Gridview - Fatal编程技术网

C# gridview中dropdownlist编辑模式下的重复项

C# gridview中dropdownlist编辑模式下的重复项,c#,asp.net,gridview,C#,Asp.net,Gridview,我试图在编辑模式下用dropdownlist填充我的gridview列之一。但它显示的是一个重复项,它是编辑模式之前该行的原始值。如何在编辑模式的下拉列表中删除重复项 正常模式: 编辑模式: 这是我的密码: if (e.Row.RowType == DataControlRowType.DataRow) { if ((e.Row.RowState & DataControlRowState.Edit) > 0) {

我试图在编辑模式下用dropdownlist填充我的gridview列之一。但它显示的是一个重复项,它是编辑模式之前该行的原始值。如何在编辑模式的下拉列表中删除重复项

正常模式:

编辑模式:

这是我的密码:

    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();
        }
    }
使用:

ddl.Items.Clear

在绑定下拉列表之前

编辑2:

编辑1:

从下拉列表中隐藏项目:

var item = DropDownList1.Items.Select(p=>p.value == Your_Value).first();
DropDownList1.Remove(item);
or
DropDownList1.Items.Remove(DropDownList1.Items.FindByValue("02"));
在getAllSemList的查询中,可以使用不同的查询,如:

SELECT DISTINCT columns
FROM table_name
WHERE where_conditions
因此,即使您的表中有多个条目,它也只会复制该行的一个副本。这样,您的下拉列表将不会多次显示相同的列值

编辑1:

您可以使用另一个查询,该查询不会在您的表中插入重复的条目,即:

INSERT IGNORE INTO TableName (Column1, Column2) VALUES('Value1' , 'Value2')
此外,如果只有一行dropwdown,那么只需通过

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:

是需要与包含CatName的下拉列表的数据源绑定的sql FIDLE

查询返回CategoryName和CategoryID,您应该做的是:

dropdown.DataTextField = "CatName";
dropdown.DataValueField = "CategoryID";
。 . . .
在更新时执行此操作,您将有一个类别id要更新

这对我不起作用,有没有办法在dropdownlist中隐藏该项目?请参阅我的更新答案。但我希望看到您在getAllSemListSelect DISTINCT*中运行的查询,它来自研讨会列表SL,类别C,其中SL.CategoryID=C.CategoryID更喜欢在此处使用联接查询:SELECT DISTINCT研讨会列表。*,Category.*从Seminar\u List.CategoryID=Category.CategoryID其中Seminar\u List.CategoryID=@categoryIDok上的Seminar\u List内部联接类别,如何获取所选值并更新到我的数据库?我有这些代码,但不起作用:List seminarList=Seminar\u ListDB.getAllSemList;研讨会列表sl=seminarList[e.RowIndex];sl.CategoryId=e.NewValues[CategoryId].ToString;与其将其重命名为其他内容,不如完全隐藏/删除它。我想这只是第一个项目有重复项,我意识到下面还有更多内容,如何检测这些重复项并将其删除?使用ddl.Items.Clear;在ddl.DataSource=Seminar_ListDB.getAllSemList之前@agsuse distinct关键字例如:选择distinct t1.name作为表1中的名称作为t1加入表2 t1上的t2。id=t2。idtry:从类别中选择distinct c.CatName作为c加入研讨会\u列表作为c.CategoryId=s.CategoryId小提琴
public int Update(MyClass obj){
//update query
      UPDATE Table1 set Col1 = @col1value, Col2 = @col2value...
    WHERE *condition* 
}
dropdown.DataTextField = "CatName";
dropdown.DataValueField = "CategoryID";