2012-06-06 3 views
1

Мне нужно создать Excel как элемент управления, используя Telerik RadGrid - динамический размер столбцов и строк в редактировании строк. Моя проблема заключается в том, что когда я пытаюсь вызвать команду обновления в отредактированной строке, она имеет только старые значения.RadGrid inplace edit - нет значений при запуске команды обновления

Мой 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 
    } 

ответ

0

Пожалуйста, удалите ниже код с вашего page_load event.It не требуется Radgrid Автоматически управлять этой штукой. для получения дополнительной информации. пожалуйста, проверьте ниже ссылку. http://www.telerik.com/help/aspnet-ajax/grid-advanced-data-binding.html

else 
    { 
     rgDataSheet.Rebind(); 
    } 
Смежные вопросы