【问题标题】:How can I refresh a radSchedule after changes to a bound Dataset?更改绑定数据集后如何刷新 radSchedule?
【发布时间】:2011-11-07 11:00:48
【问题描述】:

我认为 radSchedular 有点问题。

我有一个绑定到数据集的 radSchedular。

我希望 radSchedular 在我更改数据集时更新。但我不明白。

我的问题是。数据集更新时如何更新 radSchedular 的显示?

示例代码:

我如何绑定:-

        private void BindToDataSet()
    {                

        //Map fields for Appointments
        AppointmentMappingInfo appointmentMappingInfo = new AppointmentMappingInfo();

        appointmentMappingInfo.Start = "appointments_Start";
        appointmentMappingInfo.End = "appointments_End";      //LOTS OF THESE SO I CUT THE REST OUT OF THIS EXAMPLE


        datasource.EventProvider.Mapping = appointmentMappingInfo;
        datasource.EventProvider.DataSource = dsSchedule.Tables[0];   //MY DATASET IS GENERATED FROM AN XML FILE WITH A SCHEMA

        //Bind
        radScheduler1.DataSource = datasource;
    }

我如何获取数据集更改事件:-

private void BindEvents(){
// RowChanged event handler.
dsSchedule.Tables[0].RowChanged += new DataRowChangeEventHandler(RowChanged);

// Add a RowDeleted event handler.
dsSchedule.Tables[0].RowDeleted += new DataRowChangeEventHandler(RowDeleted);}

事件方法:-

private void RowChanged(object sender, DataRowChangeEventArgs e){
StoreToXML();
BindEvents();}

我如何存储数据以及如何刷新 radSchedular:-

private void StoreToXML(){

//remove the dataset change deligates as we are about to change the Dataset and we don't want a loop
UnBindEvents();

foreach (DataRow rowAppointments in dsSchedule.Tables["Appointments"].Rows)
{
    string currentResource = rowAppointments["appointments_ResourceID"].ToString();

    foreach (DataRow rowResources in dsSchedule.Tables["Resources"].Rows)
    {
    if (rowResources["resources_ID"].ToString() == currentResource)
    {
        rowAppointments["appointments_Location"] = rowResources["resources_Name"];  //THIS IS WHY I WANT THE radSCHEDULAR TO UPDATE. 
    }                                       //I WANT TO SEE THE RESOURCE IN THE LOCATION FIELD
    }
}


StreamWriter myStreamWriter = new StreamWriter(@"E:\My .NET\Hardware_Scheduler_Application\stdData.xml");
dsSchedule.WriteXml(myStreamWriter, XmlWriteMode.WriteSchema);
myStreamWriter.Close();
BindToDataSet();   //I THOUGHT THAT THIS WOULD REFRESH THE radSCHEDULAR

//rebind the changed events
BindEvents()}

【问题讨论】:

  • 数据集是否暴露了IObservable?
  • 不,我认为 DataSet 不会。

标签: c# dataset telerik radscheduler


【解决方案1】:

通过将这两行代码放在事件 RadScheduler1_AppointmentInsertRadScheduler1_AppointmentDelete 的末尾,我自己解决了这个问题。这两行是:

Appointments.Clear();
InitializeAppointments();

仅当您按照 Telerik 网站上给出的示例设置网格时,这才对您有效。你可以在这里找到一个链接:https://demos.telerik.com/aspnet-ajax/scheduler/examples/overview/defaultcs.aspx

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多