استخدم MSHFlexGrid مع بيانات غير قاعدة بيانات وما زلت تحدد الشكل

StackOverflow https://stackoverflow.com/questions/1732721

  •  20-09-2019
  •  | 
  •  

سؤال

أحاول استخدام Microsoft Hiangerical FlexGrid (MShflexGrid) في Visual C ++ (VS 2005). لدي الشبكة الموضحة، ويمكنني إضافة بيانات يدويا إلى الخلايا الفردية. ومع ذلك، وفقا للانترنت توثيق لقد قرأت، يجب أن أكون قادرا على إظهار الطبيعة الهرمية للبيانات (وبالتالي mshflexgrid بدلا من msflexgrid) من خلال تحديد الشكل كأداة المساعدة. يمكنني أن أفعل ذلك جيدا (باستخدام طريقة PUT_RECORDSOURCE لكائن الشبكة)، ومع ذلك، فأنا في خسارة حول كيفية إضافة البيانات الفعلية.

لقد قرأت أن أفضل طريقة للقيام بذلك هي استخدام مكون ADO Control للبيانات (IE ADODC) وربطها كمستحضر بيانات للشبكة. يمكنك بعد ذلك تحديد "مزود = msdatashape؛ مزود البيانات = لا شيء؛" كمزود DataControl وملء البيانات. إذا كنت أفعل SQL، فستحدد استعلامي المحدد كأداة المساعدة، ثم اتصل بالتحديث () والسماح للتحكم في تحميل البيانات.

ومع ذلك، بياناتي في كائنات مخصصة. أعرف ما يجب عرضه، أنا فقط في خسارة فقط بأفضل طريقة لإدراج البيانات في FlexGrid وما زالت تستخدم ميزات التحكم المدمجة. أنا منفتح على أي اقتراحات، لكنني بحاجة إلى الحفاظ على البيانات المحلية (أي أي طائرة، الوصول، إلخ).

إليك بعض الكود:

في رأس:

....
// Variable to control the Flex Grid component
CMshflexgrid1 m_grid;  //generated by wizard from the MSHFlexGrid component

// to control the data source hierarchical information
CAdodc1 m_adodc1;
....

في CPP:

....
BOOL MyDialogClass::OnInitDialog()
{
  CDialog::OnInitDialog();

  m_grid.Clear();

  CString strCn = "provider=msdatashape;data provider=none;"; 
  m_adodc1.put_ConnectionString(strCn);

  CString BackupOfRecordSource = "";
  BackupOfRecordSource = m_adodc1.get_RecordSource();

  //CString strShape = "SHAPE APPEND new adInteger As PID, New adVarChar(10) As StudentName, ((SHAPE APPEND new adInteger As ChID, New adVarChar(10) As Course, ((SHAPE APPEND new adInteger As GrndChID, New adBSTR As Description) RELATE  ChID TO GrndChID) As GrandChild) RELATE PID TO ChID) AS Child";
  CString strShape = "SHAPE APPEND new adInteger As PID, New adVarChar(10) As StudentName";
  m_adodc1.put_RecordSource(strShape);
  m_adodc1.Refresh();
  m_grid.Refresh();

  BackupOfRecordSource = m_adodc1.get_RecordSource();  //returns the strShape that I just put in

  //ADD RECORDS HERE!  HOW?

  return TRUE;
}

لا يوجد حل صحيح

نصائح أخرى

تحدثت العينة عن بناء adodb.recordset واستخدامها كمصدر بيانات ADODC. الرمز الذي تقدمه هو بناء SQL واستخدامه كمصدر بيانات ADODC. لا أعتقد أنه يمكنك استبدال Adodb.recordset بسلسلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top