Problem in edit mode

7 posts, 0 answers
  1. Shawn Amina
    Shawn Amina avatar
    4 posts
    Member since:
    Apr 2007

    Posted 11 Aug 2008 Link to this post

    Problem description:

    The sample project contains a RadGrid (2 columns, 4 rows) that switches the  second column in the second and fourth rows in edit mode. The problem is that the first column does not display its value anymore (the value is "lost") while the second column is in edit mode. When I try to iterate through all the rows in Save_Command handler, I cannot get the value from these columns either.


    Default.aspx

    <%

    @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <%

    @ Register TagPrefix="tlk" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>

    <%

    @ Register TagPrefix="ajax" Namespace="System.Web.UI" Assembly="System.Web.Extensions" %>

    <!

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <

    html xmlns="http://www.w3.org/1999/xhtml">

    <

    head runat="server">

    <title>Untitled Page</title>

    </

    head>

    <

    body>

    <form id="form1" runat="server">

    <ajax:ScriptManager ID="ScriptManager" runat="server">

    </ajax:ScriptManager>

    <tlk:RadGrid ID="RadGrid1" Width="100%" AllowMultiRowEdit="true"

    OnNeedDataSource="RadGrid_NeedDataSource" runat="server"

    OnItemCreated="RadGrid1_ItemCreated" >

    <MasterTableView ShowHeadersWhenNoRecords="true" Width="100%" AutoGenerateColumns="false" EditMode="InPlace" >

    <Columns>

    <tlk:GridBoundColumn UniqueName="Name" HeaderText="Name" DataField="Name" />

    <tlk:GridBoundColumn UniqueName="Amount" HeaderText="Amount" DataField="Amount" />

    </Columns>

    <EditItemStyle BackColor="transparent" />

    </MasterTableView>

    <ClientSettings>

    <Resizing AllowColumnResize="true" AllowRowResize="true" />

    <Scrolling AllowScroll="true" UseStaticHeaders="true" />

    </ClientSettings>

    <HeaderStyle Width="150px" />

    </tlk:RadGrid>

    <div style="text-align:right; margin-top:5px">

    <asp:Button ID="SaveButton" Text="Save" runat="server" OnCommand="Save_Command" />

    </div>

    </form>

    </

    body>

    </

    html>

    Default.aspx.cs

    using

    System;

    using

    System.Data;

    using

    System.Configuration;

    using

    System.Collections;

    using

    System.Web;

    using

    System.Web.Security;

    using

    System.Web.UI;

    using

    System.Web.UI.WebControls;

    using

    System.Web.UI.WebControls.WebParts;

    using

    System.Web.UI.HtmlControls;

    using

    Telerik.Web.UI;

    public

    partial class _Default : System.Web.UI.Page

    {

    protected void RadGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)

    {

    DataTable table = new DataTable();

    table.Columns.Add(

    new DataColumn("Name"));

    table.Columns.Add(

    new DataColumn("Amount"));

    table.Rows.Add(

    new object[] { "John", "11" });

    table.Rows.Add(

    new object[] { "David", "22" });

    table.Rows.Add(

    new object[] { "Elvis", "33" });

    table.Rows.Add(

    new object[] { "Oliver", "44" });

    ((

    RadGrid)source).DataSource = table;

    }

    protected void Page_PreRender(object sender, EventArgs e)

    {

    RadGrid1.Items[1].Edit =

    true;

    RadGrid1.Items[3].Edit =

    true;

    RadGrid1.Rebind();

    }

    protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)

    {

    if (e.Item is GridDataItem && e.Item.IsInEditMode)

    {

    foreach (GridColumn column in e.Item.OwnerTableView.RenderColumns)

    {

    if (column is GridBoundColumn)

    {

    if (string.Compare(column.UniqueName, "Amount", StringComparison.InvariantCultureIgnoreCase) == 0)

    {

    ((

    GridBoundColumn)column).ReadOnly = false;

    TextBox textBox = null;

    if (e.Item is GridDataItem)

    {

    textBox = ((

    TextBox)((GridDataItem)e.Item)[column.UniqueName].Controls[0]);

    textBox.Style[

    "width"] = "100%";

    textBox.Style[

    "height"] = "100%";

    textBox.Style[

    "border"] = "1px";

    textBox.Style[

    "text-align"] = "right";

    }

    }

    else

    {

    ((

    GridBoundColumn)column).ReadOnly = true;

    }

    }

    }

    }

    }

    protected void Save_Command(object source, EventArgs e)

    {

    string name = "";

    foreach (GridDataItem item in RadGrid1.Items)

    {

    name = item[

    "Name"].Text;

    }

    }

    }


    I also have a second question: I would like to have an extra row to show the rollup on the editable column. Is it possible to have this total being updated as the user modifies the editable fields ?

  2. Iana Tsolova
    Admin
    Iana Tsolova avatar
    3388 posts

    Posted 14 Aug 2008 Link to this post

    Hello Shawn Amina,

    I suggest that you add the readonly field to the DataKeyNames collection of the MasterTableView in order to access its value as desired.

    Find more about retrieving primary key values in the following online resources:
    http://www.telerik.com/help/aspnet-ajax/grdretrieveprimarykeyfieldvaluesforitems.html
    http://www.telerik.com/help/aspnet-ajax/grdaccessingcellsandrows.html
    http://www.telerik.com/help/aspnet-ajax/grdupdatinginplaceandeditforms.html

    Let us know if you need further directions/help.

    Regards,
    Iana
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Shawn Amina
    Shawn Amina avatar
    4 posts
    Member since:
    Apr 2007

    Posted 15 Aug 2008 Link to this post

    Hello Iana,

    Adding the readonly field to the DataKeyNames does not address (and does not solve) the first issue which is the fact that the read only field value is not displayed at all while the other column is in edit mode. Getting the read only value should work the same for all rows regardless of the other column being in edit mode or not. As such, adding the readonly field to the DataKeyNames is merely a workaround not a solution (or the "correct" way of doing it).

    There is also a question at the end of my post. Could you please try to answer that too ?

    Best Regards
  5. Iana Tsolova
    Admin
    Iana Tsolova avatar
    3388 posts

    Posted 19 Aug 2008 Link to this post

    Hello Shawn Amina,

    Excuse me for not answering your question from the bottom of the ticket.
    There is no built-in functionality in RadGrid for achieving the desired result from this second question.

    Regarding your first issue:
    Please try removing the transparent back color from the EditItemStyle or change with another one and check if the ReadOnly fields are displayed when in edit mode.

    Sincerely yours,
    Iana
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  6. Acadia
    Acadia avatar
    203 posts
    Member since:
    May 2005

    Posted 21 Aug 2008 Link to this post

    I am having the exact same problem.  This appears to be a design issue or limitation in the Rad grid when using in-line editing.  You cannot access both the edit-mode column values and the non-edit-mode column values simultaneously.  I've written a ton of code to try to do this and you just can't as far as I can tell.

    If there is a way I would like to know what it is.
  7. Kiara
    Kiara avatar
    309 posts
    Member since:
    Jul 2006

    Posted 22 Aug 2008 Link to this post

    Acadia, I found these resouces which elaborate on how to access the non-editable ow values as well as the data from the column editors in RadGrid - check them out:

    http://www.telerik.com/help/aspnet-ajax/grdeditforms.html
    http://www.telerik.com/demos/aspnet/prometheus/Grid/Examples/Programming/AccessingCellsAndRows/DefaultCS.aspx
    http://www.telerik.com/help/aspnet-ajax/grdaccessingcellsandrows.html

    Kiara
  8. Acadia
    Acadia avatar
    203 posts
    Member since:
    May 2005

    Posted 22 Aug 2008 Link to this post

    Thanks Kiara, but I actually posted my solution in my other thread this morning (entitled Grid Combobox in Edit Mode) and I feel it is a simpler way to do this, especially since I don't want to use EditForm as the edit mode, I want to use In-Place.

    Thanks
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017