ProcedureDataSource.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System.Data;
  2. namespace FastReport.Data
  3. {
  4. /// <summary>
  5. /// Datasource for stored procedure.
  6. /// </summary>
  7. public partial class ProcedureDataSource : TableDataSource
  8. {
  9. internal string DisplayNameWithParams
  10. {
  11. get
  12. {
  13. if (Parameters != null)
  14. {
  15. string paramsStr = "";
  16. foreach (CommandParameter parameter in Parameters)
  17. {
  18. if (parameter.Direction == ParameterDirection.Input || parameter.Direction == ParameterDirection.InputOutput)
  19. paramsStr += parameter.Name + ", ";
  20. }
  21. if (paramsStr.EndsWith(", "))
  22. paramsStr = paramsStr.Substring(0, paramsStr.Length - 2);
  23. if (paramsStr != "")
  24. return Name + " (" + paramsStr + ")";
  25. }
  26. return Name;
  27. }
  28. }
  29. /// <inheritdoc/>
  30. public override void InitSchema()
  31. {
  32. base.InitSchema();
  33. if (Parameters != null)
  34. {
  35. foreach (CommandParameter parameter in Parameters)
  36. {
  37. if (parameter.Direction == ParameterDirection.Input)
  38. continue;
  39. var column = Columns.FindByName(parameter.Name);
  40. if (column == null)
  41. {
  42. column = new Column
  43. {
  44. Name = parameter.Name,
  45. DataType = typeof(Variant)
  46. };
  47. Columns.Add(column);
  48. }
  49. column.Tag = parameter;
  50. }
  51. }
  52. }
  53. /// <inheritdoc/>
  54. protected override object GetValue(Column column)
  55. {
  56. if (column.Tag is CommandParameter parameter)
  57. {
  58. return parameter.Value;
  59. }
  60. return base.GetValue(column);
  61. }
  62. }
  63. }