2015-07-10 3 views
1

Я видел, что этот вопрос задавали и отвечали раньше, но ни один из ответов не помог мне. Я хочу это, когда я вставляю значение из текстового поля, нажимая кнопку, если это значение уже существует в gridview, которое должно быть удалено или вообще не вставлено.Удалить дублирующее значение в строках gridview

Мой код:

protected void Buton1_Click(object sender, EventArgs e) 
{ 
    DataTable dt = null; 

    if (Session["GridData"] == null) 
    { 
     dt = new DataTable(); 
     DataColumn dc = new DataColumn("Name"); 
     dt.Columns.Add(dc); 
    } 
    else 
    { 
     dt = Session["GridData"] as DataTable; 
    } 

    DataRow dr = dt.NewRow(); 
    dr["Name"] = TextBox1.Text; 
    dt.Rows.Add(dr); 
    dt.AcceptChanges(); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
    Session["GridData"] = dt; 
} 

ответ

1

ITs лучше вы первое контрольное значение существует или нет в таблице и чем вставить его в таблицу.

var data = (from row in dt.AsEnumerable() 
      where row.Field<string>("Name") == TextBox1.Text 
      select row).ToList(); 
if(data != null && data.Count > 0) 
{ 
    //insert new row in table 
} 

или

var data = (from row in dt.AsEnumerable() 
      select row). 
      FirstODefault(row=>row.Field<string> 
        ("Name") == TextBox1.Text); 
if(data != null) 
{ 
    //insert new row in table 
} 
+0

Я получаю ошибку «A запрос тело должно заканчиваться предложением select или групповым предложением ». есть что-то не хватает? –

+0

@CezaraH - я обновил ответ, я думаю, проблема с firstordefault, поэтому изменила его на список и проверила количество ... –

+0

Это не нравится valuetosearch. Даже после того, как вы его отредактировали, здесь произошла ошибка. –

0

Попробуйте проверить наличие дубликатов, прежде чем добавить строку:

bool isDuplicate = false; 
foreach (DataRow row in dt.Rows) 
{ 
    if (row["Name"] == TextBox1.Text) 
    { 
     isDuplicate = true; 
     break; 
    } 
} 

Тогда сделать свою вещь, если это не дублировать:

if (!isDuplicate) 
{ 
    DataRow dr = dt.NewRow(); 
    dr["Name"] = TextBox1.Text; 
    dt.Rows.Add(dr); 
    dt.AcceptChanges(); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
    Session["GridData"] = dt; 
} 
+0

Хороший ответ, но Cezara H также хочет удалить данные, если он уже существует. –

+0

почему вы не идете для linq или RowFilter здесь –

+0

@PranayRana не захотела пропустить синтаксис, так как я отвечаю с мобильного телефона :) – msmolcic

0

Так вы можете Проверьте это с Sqlserver s язь Если это значение уже существует, то она не должна быть вставлена ​​я думаю, что лучше проверить с SQL стороны, потому что это занимает меньше времени, чем проверка из кода за

как

if not exists (select name from table where [email protected]) begin insert into table values(name)values(@name) end

Смежные вопросы