2016-10-31 2 views
0
.

. Я пытаюсь удалить кнопку кнопки «Щелчок кнопкой мыши». Я не могу удалить только выбранную строку, она удалила всю сетку и не отобразила сетку. Как я могу исправить удаление выбранной строки?Нажмите кнопку «Удалить», щелкните по всей сетке в ASP.NET.

Перед удаления:

before delete

После удаления:

After delete

код

protected void btnDeleteOK_Click(object sender, EventArgs e) 
{ 
    dtItems = new DataTable(); 
    dtItems.Columns.Add("RowId"); 
    dtItems.Columns.Add("ItemId"); 
    dtItems.Columns.Add("Percentage", typeof(decimal)); 
    dtItems.Columns.Add("LabDipId"); 
    dtItems.Columns.Add("RecipeId"); 

    foreach (GridViewRow gr in gdDyeNames.Rows) 
    { 
     TextBox txtPercentage = (TextBox)gr.FindControl("txtPercentage"); 
     DropDownList ddlDyeingType = ((DropDownList)gr.FindControl("ddlDyeingType")); 

     DataRow dr = dtItems.NewRow(); 

     dr["RecipeId"] = SelectedReciptId; 
     dr["ItemId"] = int.Parse(ddlDyeingType.SelectedValue.ToString()); 
     dr["Percentage"] = decimal.Parse(txtPercentage.Text).ToString(); 
     dtItems.Rows.Add(dr); 
    } 

    DataRow[] drItem = dtItems.Select("ItemId = " + selectedRowId); 

    foreach (DataRow dr in drItem) 
    { 
     dtItems.Rows.Remove(dr); 
    } 

    gdDyeNames.DataSource = dtItems; 
    gdDyeNames.DataBind(); 

    lblEror.Text = ""; 
    lblMsg.Text = ""; 
    mpdelete.Hide(); 
} 
+0

Что значение 'DataRow [] drItem' после выбора. возможно, это ваша избранная причина. – Bucketcode

+0

Почему вы воссоздаете новую таблицу, разве вы не должны использовать только существующую, можем ли мы увидеть привязки для DataTable, тогда это сделает больше того, что вы пытаетесь сделать. –

+0

sir, im удален и попробуйте, но не работаем –

ответ

0

Наконец я развивать его, то будет работать нормально

if (dtItems != null) 
      { 
       ImageButton imb = sender as ImageButton; 
       int rowIndex = Convert.ToInt32(imb.CommandArgument); 


       if (dtItems.Rows.Count > 0) 
       { 
        dtItems.Rows.Remove(dtItems.Rows[rowIndex]); 

        gdDyeNames.DataSource = dtItems; 
        gdDyeNames.DataBind(); 

        lblEror.Text = ""; 
        lblMsg.Text = ""; 
        mpdelete.Hide(); 

        if (dtItems.Rows.Count == 0) 
        { 
         createIntialGrid(); 
        } 
-1

Попробуйте

protected void btnDeleteOK_Click(object sender, EventArgs e) 
{ 
    dtItems = new DataTable(); 
    dtItems.Columns.Add("RowId"); 
    dtItems.Columns.Add("ItemId"); 
    dtItems.Columns.Add("Percentage", typeof(decimal)); 
    dtItems.Columns.Add("LabDipId"); 
    dtItems.Columns.Add("RecipeId"); 

    foreach (GridViewRow gr in gdDyeNames.Rows) 
    { 
     TextBox txtPercentage = (TextBox)gr.FindControl("txtPercentage"); 
     DropDownList ddlDyeingType = ((DropDownList)gr.FindControl("ddlDyeingType")); 

     DataRow dr = dtItems.NewRow(); 

     dr["RecipeId"] = SelectedReciptId; 
     dr["ItemId"] = int.Parse(ddlDyeingType.SelectedValue.ToString()); 
     dr["Percentage"] = decimal.Parse(txtPercentage.Text).ToString(); 
     dtItems.Rows.Add(dr); 
    } 


     ImageButton btnDetails = (ImageButton)sender; //Change Image button to your Button used 
     GridViewRow row = (GridViewRow)btnDetails.NamingContainer; 
     int rowIndex = row.RowIndex; 
     DataRow dr = dtItems.Rows[rowIndex]; 
     dtItems.Rows.Remove(dr); 
     dtItems.AcceptChanges(); 

    gdDyeNames.DataSource = dtItems; 
    gdDyeNames.DataBind(); 

    lblEror.Text = ""; 
    lblMsg.Text = ""; 
    mpdelete.Hide(); 
} 
+0

ошибка для этого 'DataRow dr = dtItems.Rows [rowIndex];' –

+0

вы можете проверить значение integer 'rowIndex'. Если значение rowIndex присутствует в индексе строк dtItems, вы должны получить соответствующую строку. И лучше использовать ViewState для хранения ваших данных. Вы должны изучить немного больше при отладке. – Anoopkumar

+0

ViewState ["List1"] = dtItems; – Anoopkumar

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