Я обошел эту проблему.в gridview у меня есть столбец шаблона (я передаю два аргумента в CommandArgument):
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ToolTip="Delete" ID="button4" ButtonType="Image" ImageUrl="~/Projectimages/img_del.png" Text="" CommandName="Select" CommandArgument='<%#Eval("ID") + ";" +"Delete"%>' runat="server"/>
</ItemTemplate>
</asp:TemplateField>
в коде позади Я разделяю CommandArgument и сохраняю значения в переменных, а затем использую их в событии SelectedIndexChanged:
string selectCommand = "";
int selectCommandID = -1;
protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
if (!e.CommandArgument.ToString().Contains(";"))
selectCommand = "Select";
else
{
selectCommandID = Convert.ToInt32(e.CommandArgument.ToString().Split(';')[0]);
selectCommand = e.CommandArgument.ToString().Split(';')[1];
}
}
}
protected void GridView_SelectedIndexChanged(object sender, EventArgs e)
{
if (selectCommand == "Select")
{
//Select Code Here
}
else if (selectCommand == "Delete")
{
MyTestEntities context = new MyTestEntities();
Table1 selectedRow = context.Table1.Single(a => a.ID == selectCommandID);
context.Table1.DeleteObject(selectedRow);
context.SaveChanges();
EntityDataSource1.DataBind();
}
}
это работает.Вы также можете использовать это для обновления строки gridview.