Note that there are some explanatory texts on larger screens.

plurals
  1. POASP.NET GridView not updating or deleting with EntityDataSource
    primarykey
    data
    text
    <p>I am developing a ASP.NET web custom control, which inherits from System.Web.Ui.WebControls.GridView.</p> <p>Here is the source code:</p> <pre><code> public sealed class FaqListEditor : GridView { private readonly string _connectionString; private readonly EntityDataSource _faqEntityDataSource = new EntityDataSource(); public FaqListEditor() { _connectionString = ConfigurationManager.ConnectionStrings["FaqEntities"] != null ? ConfigurationManager.ConnectionStrings["FaqEntities"].ConnectionString : null; this.InitilizeDataSource(); this.InitializeGrid(); this.InitializeGridColumns(); this.InitializeGridEvents(); } private void InitilizeDataSource() { this._faqEntityDataSource.AutoPage = true; this._faqEntityDataSource.AutoSort = true; this._faqEntityDataSource.ConnectionString = this._connectionString; this._faqEntityDataSource.DefaultContainerName = "FaqEntities"; this._faqEntityDataSource.EnableInsert = true; this._faqEntityDataSource.EnableUpdate = true; this._faqEntityDataSource.EnableDelete = true; this._faqEntityDataSource.EntitySetName = "FaqItems"; this._faqEntityDataSource.EntityTypeFilter = "FaqItem"; this._faqEntityDataSource.Include = "FaqCategory"; } private void InitializeGrid() { this.AllowPaging = true; this.AllowSorting = true; this.AutoGenerateColumns = false; this.AutoGenerateEditButton = false; this.DataKeyNames = new[] { "Id" }; this.ShowHeaderWhenEmpty = true; this.ShowHeader = true; this.ShowFooter = true; } private void InitializeGridEvents() { this.RowEditing += this.HandleRowEditing; this.RowUpdating += this.HandleRowUpdating; this.RowDeleting += this.HandleRowDeleting; this.RowCancelingEdit += this.HandleRowCancelingEdit; } private void InitializeGridColumns() { this.Columns.Add(new CommandField { ButtonType = ButtonType.Link, ShowDeleteButton = true, ShowInsertButton = true, ShowEditButton = true, ShowCancelButton = true }); this.Columns.Add(new BoundField { DataField = "CategoryId", HeaderText = "CategoryId", SortExpression = "CategoryId" }); this.Columns.Add(new BoundField { DataField = "Question", HeaderText = "Question", SortExpression = "Question" }); this.Columns.Add(new BoundField { DataField = "Answer", HeaderText = "Answer", SortExpression = "Answer" }); this.Columns.Add(new TemplateField { HeaderText = "Start Date", SortExpression = "StartDate", ItemTemplate = new DateTimePickerTemplate(ListItemType.Item, "StartDate"), EditItemTemplate = new DateTimePickerTemplate(ListItemType.EditItem, "StartDate") }); this.Columns.Add(new TemplateField { HeaderText = "End Date", SortExpression = "EndDate", ItemTemplate = new DateTimePickerTemplate(ListItemType.Item, "EndDate"), EditItemTemplate = new DateTimePickerTemplate(ListItemType.EditItem, "EndDate") }); this.Columns.Add(new CheckBoxField { DataField = "IsPublished", HeaderText = "Published", SortExpression = "IsPublished" }); } private void InitializeBinding() { this.DataSource = this._faqEntityDataSource; this.DataBind(); } private void HandleRowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { e.Cancel = true; ((GridView)sender).EditIndex = -1; this.InitializeBinding(); } private void HandleRowEditing(object sender, GridViewEditEventArgs e) { ((GridView)sender).EditIndex = e.NewEditIndex; this.InitializeBinding(); } private void HandleRowDeleting(object sender, GridViewDeleteEventArgs e) { ((GridView)sender).EditIndex = -1; this.InitializeBinding(); } private void HandleRowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = Rows[e.RowIndex]; ((GridView)sender).EditIndex = -1; this.InitializeBinding(); } protected override void OnInit(EventArgs e) { if (!this.Page.IsPostBack) this.InitializeBinding(); } } </code></pre> <p>}</p> <p>Basically, I manage to retrieve data and to display. I am also able to switch the gridview to editmode. However, when I press the row "save" command, nothing happens. The page is reloaded and the gridview remains in edit mode. (the GridView Updating event is not even fired!)</p> <p>Can you see any evident error in the code?<br>Any suggestion?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload