This is a migrated thread and some comments may be shown as answers.

Programmatic Grid Not Firing UpdateCommand

5 Answers 88 Views
Grid
This is a migrated thread and some comments may be shown as answers.
dave
Top achievements
Rank 1
dave asked on 04 Nov 2008, 05:51 AM

I've seen other posts where people are having similar issues. I tried their suggestions and still no good. I cannot get this grid to fire the update command. I'm programmatically creating the grid and using a template edit form...


Grid setup:
  private void SetupStoreGridView()  
    {  
 
        // create columns   
        GridEditCommandColumn storeEditCol = new GridEditCommandColumn();  
        GridBoundColumn storeNumberCol = new GridBoundColumn();  
        GridBoundColumn storeNameCol = new GridBoundColumn();  
        GridBoundColumn storePhoneCol = new GridBoundColumn();  
        GridBoundColumn storeAddressCol = new GridBoundColumn();  
        GridBoundColumn storeCityCol = new GridBoundColumn();  
        GridBoundColumn storeStateCol = new GridBoundColumn();  
        GridBoundColumn storeZipCol = new GridBoundColumn();  
        GridBoundColumn storeDesignNameCol = new GridBoundColumn();  
        GridBoundColumn storeChocolixirCol = new GridBoundColumn();  
 
        // main grid properties  
        m_StoreGridViewRad = new RadGrid();  
        m_StoreGridViewRad.ID = "StoreGridViewRad";  
        m_StoreGridViewRad.GridLines = GridLines.Vertical;  
        m_StoreGridViewRad.AllowMultiRowSelection = false;  
        m_StoreGridViewRad.AutoGenerateColumns = false;  
        m_StoreGridViewRad.AllowSorting = true;  
        m_StoreGridViewRad.Skin = "WebBlue";  
        m_StoreGridViewRad.Width = Unit.Percentage(95);  
        m_StoreGridViewRad.UpdateCommand += new GridCommandEventHandler(m_StoreGridViewRad_UpdateCommand);  
        m_StoreGridViewRad.MasterTableView.AllowAutomaticUpdates = true;  
 
        m_StoreGridViewRad.MasterTableView.EditFormSettings.EditFormType = GridEditFormType.Template;  
        m_StoreGridViewRad.MasterTableView.EditFormSettings.FormTemplate = new EditStoreTemplate();  
        m_StoreGridViewRad.NeedDataSource += new GridNeedDataSourceEventHandler(StoreGridViewRad_NeedDataSource);  
        m_StoreGridViewRad.AllowFilteringByColumn = true;  
 
        m_StoreGridViewRad.MasterTableView.DataKeyNames = new string[] { StoreAccess.StoreNumber };  
        m_StoreGridViewRad.MasterTableView.EnableNoRecordsTemplate = true;  
 
        // add columns to grid  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeEditCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeNumberCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeNameCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storePhoneCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeAddressCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeCityCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeStateCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeZipCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeDesignNameCol);  
        m_StoreGridViewRad.MasterTableView.Columns.Add(storeChocolixirCol);  
 
        SetupGridViewColumn(storeNumberCol, StoreAccess.StoreNumber, "Store Number");  
        SetupGridViewColumn(storeNameCol, StoreAccess.StoreName, StoreAccess.StoreName);  
        SetupGridViewColumn(storePhoneCol, StoreAccess.Phone, StoreAccess.Phone);  
        SetupGridViewColumn(storeAddressCol, StoreAccess.Address, StoreAccess.Address);  
        SetupGridViewColumn(storeCityCol, StoreAccess.City, StoreAccess.City);  
        SetupGridViewColumn(storeStateCol, StoreAccess.State, StoreAccess.State);  
        SetupGridViewColumn(storeZipCol, StoreAccess.Zip, StoreAccess.Zip);  
        SetupGridViewColumn(storeDesignNameCol, StoreAccess.DesignName, "Design Name");  
        SetupGridViewColumn(storeChocolixirCol, StoreAccess.Chocolixir, StoreAccess.Chocolixir);  
 
        GridViewPlaceHolder.Controls.Add(m_StoreGridViewRad);  
    }  
 
    void m_StoreGridViewRad_UpdateCommand(object source, GridCommandEventArgs e)  
    {  
        GridEditableItem ei = ((GridEditableItem)(e.Item));  
        Hashtable t1 = new Hashtable();  
        ei.ExtractValues(t1);  
 
        string s = t1[StoreAccess.StoreName].ToString();  
    }  
 
 
 
 
    protected void StoreGridViewRad_NeedDataSource(object source, GridNeedDataSourceEventArgs e)  
    {  
        GetStoresToBind();  
    }  
 
    void SetupGridViewColumn(GridColumn col, string uniqueName, string heading)  
    {  
        col.HeaderText = heading;  
        col.UniqueName = uniqueName;  
        col.ItemStyle.HorizontalAlign = HorizontalAlign.Left;  
 
        if (col is GridBoundColumn)  
        {  
            GridBoundColumn bCol = col as GridBoundColumn;  
            bCol.DataField = uniqueName;  
        }  
        else if (col is GridButtonColumn)  
        {  
            GridButtonColumn buttonCol = col as GridButtonColumn;  
            buttonCol.CommandName = uniqueName;  
            buttonCol.Text = uniqueName;  
        }  
 
    } 

template:
public class EditStoreTemplate : IBindableTemplate  
{  
 
    public EditStoreTemplate()  
    {  
 
    }
    #region ITemplate Members  
 
    public void InstantiateIn(Control container)  
    {  
        GridEditFormItem item = ((GridEditFormItem)(container.NamingContainer));  
        if (item != null)  
        {  
            int index = ((GridDataItem)item.ParentItem).ItemIndex;  
 
            if (item.DataItem != null)  
            {  
 
                RadTextBox storeNumberTB = new RadTextBox()  
                {  
                    ID = "txtStorNumber",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.StoreNumber, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(storeNumberTB);  
 
                RadTextBox storeNameTB = new RadTextBox()  
                {  
                    ID = "txtStoreName",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.StoreName, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(storeNameTB);  
 
                RadTextBox addrTB = new RadTextBox()  
                {  
                    ID = "txtAddr",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.Address, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(addrTB);  
 
                RadTextBox cityTB = new RadTextBox()  
                {  
                    ID = "txtCity",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.City, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(cityTB);  
 
                RadTextBox stateTB = new RadTextBox()  
                {  
                    ID = "txtState",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.State, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(stateTB);  
 
                RadTextBox zipTB = new RadTextBox()  
                {  
                    ID = "txtZip",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.Zip, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(zipTB);  
 
                RadMaskedTextBox phoneTB = new RadMaskedTextBox()  
                 {  
                     ID = "txtPhone",  
                     Text = DataBinder.Eval(item.DataItem, StoreAccess.Phone, "{0}"),  
                     Skin = "WebBlue",  
                     CausesValidation = false 
                 };  
                container.Controls.Add(phoneTB);  
 
                RadTextBox notesTB = new RadTextBox()  
                {  
                    ID = "txtNotes",  
                    Text = DataBinder.Eval(item.DataItem, StoreAccess.Notes, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(notesTB);  
 
                RadComboBox designNameCombo = new RadComboBox()  
                {  
                    ID = "cboDesignName",  
                    DataSource = DesignAccess.GetDesign(),  
                    DataTextField = DesignAccess.DesignName,  
                    DataValueField = DesignAccess.DesignNumber,  
                    SelectedValue = DataBinder.Eval(item.DataItem, StoreAccess.DesignNumber, "{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(designNameCombo);  
 
                RadTextBox regionTb = new RadTextBox()  
                {  
                    ID= "txtRegion",  
                    Text    =  DataBinder.Eval(item.DataItem,StoreAccess.Reg,"{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(regionTb);  
 
                RadTextBox typeTB = new RadTextBox()  
                {  
                    ID = "txtType",  
                    Text= DataBinder.Eval(item.DataItem,StoreAccess.Type,"{0}"),  
                    Skin = "WebBlue",  
                    CausesValidation = false 
                };  
                container.Controls.Add(typeTB);  
 
 
                CheckBox chocolixirCB = new CheckBox()  
                {  
                    ID = "chkChocolixir",  
                    Checked = bool.Parse(DataBinder.Eval(item.DataItem, StoreAccess.Chocolixir, "{0}")),  
                    Text = StoreAccess.Chocolixir,  
                    CausesValidation = false 
                };  
                container.Controls.Add(chocolixirCB);  
 
                CheckBox gCB = new CheckBox()  
                {  
                    ID = "chkG",  
                    Checked = bool.Parse(DataBinder.Eval(item.DataItem, StoreAccess.G, "{0}")),  
                    Text = "G",  
                    CausesValidation = false 
                };  
                container.Controls.Add(gCB);  
 
                Button updateButton = new Button()  
                {  
                    ID = "updateButton",  
                    Text = "Update",  
                    CommandName = "Update",  
                    CausesValidation = false 
                };  
                container.Controls.Add(updateButton);  
 
                Button cancelButton = new Button()  
                {  
                    ID = "cancelButton",  
                    Text = "Cancel",  
                    CausesValidation = false 
                };  
                cancelButton.Click += new EventHandler(cancelButton_Click);  
                container.Controls.Add(cancelButton);  
            }  
        }  
    }  
 
    void cancelButton_Click(object sender, EventArgs e)  
    {  
         
    }
    #endregion  
 
    #region IBindableTemplate Members  
 
    public System.Collections.Specialized.IOrderedDictionary ExtractValues(Control container)  
    {  
        OrderedDictionary od = new OrderedDictionary();  
        od.Add(StoreAccess.StoreName,(container.FindControl("txtStoreName"as RadTextBox).Text);  
        return od;  
    }
    #endregion  

maybe i'm doing something wrong... but i'm pretty sure i followed the demo page closely. any help would be wonderful.

Thanks,
Dave

5 Answers, 1 is accepted

Sort by
0
paul
Top achievements
Rank 2
answered on 04 Nov 2008, 05:59 PM
Your question seems to imply that only the update command is failing to fire but just to be sure, are any of them working? If it is just the update command it sounds like a bug, are you using the newest version?
0
paul
Top achievements
Rank 2
answered on 04 Nov 2008, 05:59 PM
Your question seems to imply that only the update command is failing to fire but just to be sure, are any of them working? If it is just the update command it sounds like a bug, are you using the newest version?


Oops, sorry acidently posted this twice.
0
dave
Top achievements
Rank 1
answered on 04 Nov 2008, 06:04 PM
i haven't tried insertcommand. however if i create a button column and give it a commandName="Update" then the updatecommand event is fired. it just seems like it won't work from my template.
0
paul
Top achievements
Rank 2
answered on 04 Nov 2008, 07:47 PM
What about creating an event handler on the update button and moving your "m_StoreGridViewRad_UpdateCommand" logic to that event?

Sorry I'm afraid this one may be beyond me.
0
dave
Top achievements
Rank 1
answered on 04 Nov 2008, 09:17 PM
is there a way to get the data that was just entered?
Tags
Grid
Asked by
dave
Top achievements
Rank 1
Answers by
paul
Top achievements
Rank 2
dave
Top achievements
Rank 1
Share this question
or