Quantcast
Channel: Web Forms
Viewing all articles
Browse latest Browse all 23244

OnRowDeleting

$
0
0

I am totally new to asp.net, used to php which is quite straight forward. This is my first asp.net project and it must be over a week now since I have been trying to solve this one problem. I am trying to do an Entity Framework Code 1st system. Now at the stage where I need to set up CRUD proceedures to manipulate the database but I am getting nowhere. When I try to delete I get this error message.

System.InvalidCastException: Unable to cast object of type 'System.Collections.Specialized.OrderedDictionary' to type 'System.IConvertible'.

Line 100: int row = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values);

Sometimes when I preview in browser a line of data will be deleted. I do not know how or when. 

Here are snippets of my code..

//UI ...

<asp:GridView ID="GridView1" runat="server"
ItemType="TODOLists.Models.Lists"
SelectMethod="GetLists"
GridLines="None"
AutoGenerateColumns="False"
AutoGenerateDeleteButton="True"
OnRowDeleting="DeleteList"
DataKeyNames="ListID"
>
<Columns>
<asp:TemplateField HeaderText="ListID">
<ItemTemplate>
<p style="font-size: medium; font-style: normal">
<%#: Eval ("ListID") %>

</p>
</ItemTemplate>
</asp:TemplateField>
</Columns>

<Columns>
<asp:TemplateField HeaderText="List Name">
<ItemTemplate>
<p style="font-size: medium; font-style: normal">
<a href="/ChosenList.aspx?id=<%#: Eval ("ListID") %>">
<%#: Eval ("ListName") %>
</a>
</p>
</ItemTemplate>
</asp:TemplateField>
</Columns>

<Columns>
<asp:TemplateField HeaderText="Category">
<ItemTemplate>
<p style="font-size: medium; font-style: normal">
<%#: Eval ("CategoryID") %>

</p>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

...

//Code behind ...

//To display data
public IQueryable<Lists> GetLists()
{
var db = new TODOLists.Models.ListItemsContext();
IQueryable<Lists> query = db.Lists;
return query;
}

//To delete a row of data
public void DeleteList(Object sender, GridViewDeleteEventArgs e)
{
int row = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values);
var db = new TODOLists.Models.ListItemsContext();
Lists x = db.Lists.Find(row);
db.Lists.Remove(x);
db.SaveChanges();
}

....

//Context Class

using System.Data.Entity;

namespace TODOLists.Models
{
public class ListItemsContext : DbContext
{
public ListItemsContext()
: base("TODOLists")
{
}
public DbSet<Lists> Lists { get; set; }
public DbSet<ListItems> ListItems { get; set; }
public DbSet<Category> Category { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>()
.Property(u => u.CategoryName)
.HasColumnName("CatName");
}

}
}


Viewing all articles
Browse latest Browse all 23244

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>