Avatar billede harisk Nybegynder
30. september 2005 - 11:00 Der er 3 kommentarer og
1 løsning

problemer med at går i editmode i en datagrid

hej, jeg har problemmer med at gå i edit mode i datagrid. Min kode ser således ud:

private void Page_Load(object sender, System.EventArgs e)
        {
            if(!IsPostBack)
            {
                if(Session["Room"] != null)
                {
                    this.currentRoom = (Room)Session["Room"];
                }

                if(Session["Room"] != null)
                {
                    GetData();
                }
                else
                {
                    Response.Redirect("~/Default.aspx");
                }
            }
           
            if(Session["Room"] != null)
            {
                this.currentRoom = (Room)Session["Room"];
               
            }


        }

        private void GetData()
        {
            DataBindDataGrid();
        }

        private void DataBindDataGrid()
        {
            DataTable dt = new DataTable();
            dt = DataManagerClass.GetRoomEquipment(this.currentRoom.RoomID);

            if(dt!=null)
            {
                dgRoomEquipment.DataSource = dt;
                dgRoomEquipment.DataKeyField = "RoomEquipmentID";
                dgRoomEquipment.DataBind();
            }
            else
            {
                dgRoomEquipment.Visible = false;
            }
        }

     
        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        ///        Required method for Designer support - do not modify
        ///        the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);
            this.lnkbtnNewRoomEquipment.Click += new EventHandler(lnkbtnNewRoomEquipment_Click);
            this.btnCancelNewRoomEquipment.Click += new EventHandler(btnCancelNewRoomEquipment_Click);
            this.btnSaveNewRoomEquipment.Click += new EventHandler(btnSaveNewRoomEquipment_Click);
            this.dgRoomEquipment.ItemCommand += new DataGridCommandEventHandler(dgRoomEquipment_ItemCommand);
            this.dgRoomEquipment.ItemDataBound += new DataGridItemEventHandler(dgRoomEquipment_ItemDataBound);
        }
        #endregion

       
        private void dgRoomEquipment_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            int id = Int32.Parse(this.dgRoomEquipment.DataKeys[e.Item.ItemIndex].ToString());

            if(e.CommandName.Equals("Edit"))
            {
                dgRoomEquipment.EditItemIndex = id;               
            }

            DataBindDataGrid();
        }

        private void dgRoomEquipment_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            DataRowView drv = (DataRowView) e.Item.DataItem;

            if(e.Item.ItemType == ListItemType.EditItem)
            {
                DataBindEditEquipmentDropDown();
                ddlEditEquipment.SelectedValue = drv["EquipmentID"].ToString();
            }
        }

det er en knap der har comandname Edit og når jeg klikker på den, så går den godt nok i koden og sætter editItemIndex til det rigtige ID men på selve siden kan det ikke ses. Er der noget jeg har glemt??

aspx koden:

<asp:DataGrid ID="dgRoomEquipment" Runat="server" CellPadding="2" CellSpacing="0" AutoGenerateColumns="False"
                    EnableViewState="True" HeaderStyle-CssClass="datagrid_header" AlternatingItemStyle-CssClass="datagrid_item_alternating"
                    ItemStyle-CssClass="datagrid_item" Width="100%">
                        <Columns>
                            <asp:TemplateColumn HeaderText="RoomID" Visible="False">
                                <ItemStyle Width="40" />
                                <ItemTemplate>
                                    <%# DataBinder.Eval(Container.DataItem, "RoomID") %>
                                </ItemTemplate>
                            </asp:TemplateColumn>       
                                                                                       
                            <asp:TemplateColumn HeaderText="Udstyr" HeaderStyle-Font-Bold="True">
                                <ItemStyle Width="120" />
                                <ItemTemplate>
                                    <%# DataBinder.Eval(Container.DataItem, "Equipment") %>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:DropDownList ID="ddlEditEquipment" Runat="server" CssClass="textbox" Width="200" />
                                </EditItemTemplate>
                            </asp:TemplateColumn>
                           
                            <asp:TemplateColumn HeaderText="Nuv. antal" HeaderStyle-Font-Bold="True">
                                <ItemStyle Width="60" HorizontalAlign="Center" />
                                <ItemTemplate>
                                    <%# DataBinder.Eval(Container.DataItem, "CurrentNumber") %>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:TextBox ID="txtEditCurrentNumber" Runat="server"  CssClass="textbox" Width="200" Text='<%# DataBinder.Eval(Container.DataItem, "CurrentNumber") %>'/>
                                </EditItemTemplate>
                            </asp:TemplateColumn>
                           
                            <asp:TemplateColumn HeaderText="Indkøb" HeaderStyle-Font-Bold="True">
                                <ItemStyle Width="60" HorizontalAlign="Center" />
                                <ItemTemplate>
                                    <%# DataBinder.Eval(Container.DataItem, "FutureNumber") %>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:TextBox ID="txtEditFutureNumber" Runat="server"  CssClass="textbox" Width="200" Text='<%# DataBinder.Eval(Container.DataItem, "FutureNumber") %>' />
                                </EditItemTemplate>
                            </asp:TemplateColumn>
                           
                            <asp:TemplateColumn HeaderText="Noter" HeaderStyle-Font-Bold="True">
                            <ItemStyle Width="400" />
                                <ItemTemplate>
                                    <%# DataBinder.Eval(Container.DataItem, "Note") %>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:TextBox ID="txtEditNote" Runat="server" CssClass="textbox" Width="100%" Text='<%# DataBinder.Eval(Container.DataItem, "Note") %>' />
                                </EditItemTemplate>
                            </asp:TemplateColumn>       
                                                                                       
                            <asp:TemplateColumn>
                                <ItemStyle Width="30" HorizontalAlign="Center" />
                                <ItemTemplate>
                                    <asp:ImageButton ID="imgbtnEdit" Runat="server" CommandName="Edit" ImageUrl="../Graphics/Icons/IconEdit.gif" />
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:ImageButton ID="imgbtnSave" Runat="server" CommandName="Save" ImageUrl="../Graphics/Icons/IconDone.gif" />
                                    <asp:ImageButton ID="imgbtnCancel" Runat="server" CommandName="Cancel" ImageUrl="../Graphics/Icons/IconCancel.gif" />
                                    <asp:ImageButton ID="imgbtnDelete" Runat="server" CommandName="Delete" ImageUrl="../Graphics/Icons/IconDelete.gif" />
                                </EditItemTemplate>
                            </asp:TemplateColumn>                                                                   
                        </Columns>                                                                                                               
                    </asp:DataGrid>
Avatar billede harisk Nybegynder
30. september 2005 - 14:48 #1
jeg ved ikke om det er fordi det står i en UserControl?? Jeg kan sagtens slette rækker men den vil ikke vise det i edit mode. :/
Avatar billede snepnet Nybegynder
01. oktober 2005 - 19:50 #2
jeg synes du skal gøre lægge sådan en her på dit grid:

OnEditCommand = "dgRoomEquipment_EditCommand"

og så lave en handler specifikt til det:

private void dgRoomEquipment_EditCommand(object sender, DataGridItemEventArgs e)
{
  // din kode fra før - dog uden at du spørger på kommandonavnet
}

men problemet er nok nærmere at du får id sat til -1 (prøv evt. at check det med debuggeren), hvilket medfører at ingen rækker er editérbare.

mvh
Avatar billede harisk Nybegynder
01. oktober 2005 - 20:32 #3
jeg har også prøvet det, altså det med en handler specifik til formålet med edit og der var samme problem, den rebinder men uden at gå i edit mode.
Jeg har desuden kørt med debuggeren også for at tjekke om det er den rigtige id der bliver sat, og det gør det. Men den er bare så "usammarbejdsvillig" at jeg ikke aner mine levende råd, hvad der ellers kan være sat forkert.
Der er egentligt en meget simpel datagrid uden det store... Det er lige før at jeg vil lave det hele om til en datalist.

Kan det være noget med at jeg både har 1.1 framework og 2.0 installeret og der måske opstår en konflikt? jeg ved virkeligt ikke hvad der ellers kan gøres? nogle flere knapper som der skal trykker på? :(
Avatar billede harisk Nybegynder
03. oktober 2005 - 13:20 #4
problemmet er løst, det var den forkerte ID der blev sendt afsted så selvfølgeligt kunne den ikke binde. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester