2012-06-06 32 views
1

我需要使用Telerik RadGrid創建類似於控件的Excel - 在行編輯中使用列和行的動態大小。我的問題是,當我嘗試調用編輯行上的update命令返回時,它僅具有舊值。RadGrid就地編輯 - 當更新命令觸發時沒有值

我radgrid控件控制:

<telerik:RadGrid runat="server" ID="rgDataSheet" AutoGenerateColumns="true" AllowSorting="false" AllowAutomaticDeletes="false" AllowAutomaticInserts="false" AllowAutomaticUpdates="false" 
    AllowMultiRowEdit="true" AllowPaging="false" EnableViewState="false" OnNeedDataSource="HandlerGridOnNeedDataSource" 
    OnItemUpdated="GridItemUpdated" OnInsertCommand="GridInsertCommand" OnUpdateCommand="GridUpdateCommand" 
    OnCancelCommand="GridCancelCommand"> 
    <MasterTableView runat="server" EditMode="InPlace" NoMasterRecordsText="brak rekordów" 
     ShowHeadersWhenNoRecords="true" AllowCustomSorting="false" EnableColumnsViewState="false" 
     AllowSorting="false" AllowFilteringByColumn="false" TableLayout="Fixed"> 
     <Columns> 
      <telerik:GridEditCommandColumn UpdateText="Update" EditText="Edit" CancelText="Cancel" /> 
     </Columns> 
    </MasterTableView> 
    <ClientSettings> 
     <ClientEvents OnRowClick="RowClick" /> 
    </ClientSettings> 
</telerik:RadGrid> 

我的活動:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      List<string> datakeynames = new List<string>(); 

      dataSet = new DataSet(); 
      dataSet.Tables.Add(new DataTable()); 
      dataSet.Tables[0].Columns.Add("col0"); 
      dataSet.Tables[0].Columns.Add("col1"); 
      dataSet.Tables[0].Columns.Add("col2"); 
      dataSet.Tables[0].Columns.Add("col3"); 
      dataSet.Tables[0].Columns.Add("col4"); 
      dataSet.Tables[0].Columns.Add("col5"); 

      dataSet.Tables[0].Rows.Add(new object[] { "1", "11", "a", "q", "z", "n" }); 
      dataSet.Tables[0].Rows.Add(new object[] { "2", "12", "s", "w", "x", "m" }); 
      dataSet.Tables[0].Rows.Add(new object[] { "3", "13", "d", "e", "c", "," }); 
      dataSet.Tables[0].Rows.Add(new object[] { "4", "14", "f", "r", "v", "h" }); 
      dataSet.Tables[0].Rows.Add(new object[] { "5", "15", "g", "t", "b", "y" }); 
      ViewState["dataSet"] = dataSet; 
      rgDataSheet.MasterTableView.DataKeyNames = new string[] { "col0", "col1", "col2", "col3", "col4", "col5" }; 
     } 
     else 
     { 
      rgDataSheet.Rebind(); 
     } 
    } 

protected void HandlerGridOnNeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
    { 
     dataSet = (DataSet)ViewState["dataSet"]; 
     ((RadGrid)sender).DataSource = dataSet; 
    } 

protected void GridUpdateCommand(object source, GridCommandEventArgs e) 
    { 
     //here I try access changed values, in example - 
     //GridEditableItem editedItem = e.Item as GridEditableItem; 
     //editedItem.OwnerTableView.DataKeyValues -> it contains always old values 
    } 

回答