我使用janus数据网格GridEx
,我需要创建自定义单元格:
我将数据源定义为自定义类的数组:
public interface ILinkPresentationView
{
string LinkText { get; set; }
ICommand LinkCommand { get; set; }
string LabelText { get; set; }
}
public class SuspiciousListUploadInfoWrapper
{
private readonly SuspiciousListUploadInfo _model;
private readonly ILinkPresentationView _linkPresentationView;
public SuspiciousListUploadInfoWrapper(SuspiciousListUploadInfo model, ILinkPresentationView linkPresentationView)
{
if (!Enum.IsDefined(typeof(SuspiciousListType), (int)model.ListType))
throw new InvalidEnumArgumentException(string.Format("Cannot convert 0 to type 1", model.ListType, typeof(SuspiciousListType)));
_model = model;
_linkPresentationView = linkPresentationView;
}
public int UploadId
{
get { return _model.UploadId; }
}
public DateTime UploadTime
{
get { return _model.UploadTime; }
}
public SuspiciousListType ListType
{
get { return (SuspiciousListType)_model.ListType; }
}
public string UploadedBy
{
get { return _model.UploadedBy; }
}
public ILinkPresentationView OriginalFileName
{
get { return _linkPresentationView; }
}
}
其中ILinkPresentationView
是用户控件,当前什么都不做,但我打算放置看起来像链接和标签的按钮,显示文件名。但是,如何通过设计器配置我的列并不重要 - 它始终显示实现LinkPresentationView
的{{1}}的ToString()
用户控件的数据网格所在的自动代码:
ILinkPresentationView
及其部分类定义:
partial class SuspiciousListManagementDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
Janus.Windows.GridEX.GridEXLayout _dataGrid_DesignTimeLayout = new Janus.Windows.GridEX.GridEXLayout();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SuspiciousListManagementDialog));
this._layoutRootSplitContainer = new System.Windows.Forms.SplitContainer();
this._uploadNewListGroup = new Admin.CustomControl.GenericGroupBox();
this._uploadButton = new Admin.CustomControl.AdminButton();
this._browseButton = new Admin.CustomControl.AdminButton();
this._filePathTextBox = new Admin.CustomControl.AdminTextBox();
this._filePathLabel = new Admin.CustomControl.AdminLabel();
this._listTypeLabel = new Admin.CustomControl.AdminLabel();
this._listTypeComboBox = new Admin.CustomControl.AdminComboBox();
this._uploadHistory = new Admin.CustomControl.GenericGroupBox();
this._dataGrid = new SysAdmin.Visual.Generic.AdminGridEX();
this._refreshButton = new Admin.CustomControl.AdminButton();
this._showOnlyOneCheckBox = new Admin.CustomControl.AdminCheckBox();
this._typeLabel = new Admin.CustomControl.AdminLabel();
this._historyTypeComboBox = new Admin.CustomControl.AdminComboBox();
((System.ComponentModel.ISupportInitialize)(this.btnHelp)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.LocalizedFormBasePanel)).BeginInit();
this.LocalizedFormBasePanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this._layoutRootSplitContainer)).BeginInit();
this._layoutRootSplitContainer.Panel1.SuspendLayout();
this._layoutRootSplitContainer.Panel2.SuspendLayout();
this._layoutRootSplitContainer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this._uploadNewListGroup)).BeginInit();
this._uploadNewListGroup.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this._uploadHistory)).BeginInit();
this._uploadHistory.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this._dataGrid)).BeginInit();
this.SuspendLayout();
//
// btnHelp
//
this.btnHelp.Location = new System.Drawing.Point(994, 2);
//
// LocalizedFormBasePanel
//
this.LocalizedFormBasePanel.Controls.Add(this._layoutRootSplitContainer);
this.LocalizedFormBasePanel.Size = new System.Drawing.Size(1014, 411);
this.LocalizedFormBasePanel.Controls.SetChildIndex(this.btnHelp, 0);
this.LocalizedFormBasePanel.Controls.SetChildIndex(this._layoutRootSplitContainer, 0);
//
// _layoutRootSplitContainer
//
this._layoutRootSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this._layoutRootSplitContainer.Location = new System.Drawing.Point(0, 0);
this._layoutRootSplitContainer.Name = "_layoutRootSplitContainer";
this._layoutRootSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// _layoutRootSplitContainer.Panel1
//
this._layoutRootSplitContainer.Panel1.Controls.Add(this._uploadNewListGroup);
//
// _layoutRootSplitContainer.Panel2
//
this._layoutRootSplitContainer.Panel2.Controls.Add(this._uploadHistory);
this._layoutRootSplitContainer.Size = new System.Drawing.Size(1014, 411);
this._layoutRootSplitContainer.SplitterDistance = 104;
this._layoutRootSplitContainer.TabIndex = 15;
//
// _uploadNewListGroup
//
this._uploadNewListGroup.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this._uploadNewListGroup.Controls.Add(this._uploadButton);
this._uploadNewListGroup.Controls.Add(this._browseButton);
this._uploadNewListGroup.Controls.Add(this._filePathTextBox);
this._uploadNewListGroup.Controls.Add(this._filePathLabel);
this._uploadNewListGroup.Controls.Add(this._listTypeLabel);
this._uploadNewListGroup.Controls.Add(this._listTypeComboBox);
this._uploadNewListGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this._uploadNewListGroup.GroupBoxHeader = "Upload New List";
this._uploadNewListGroup.IsAutoVisibilityEnabled = false;
this._uploadNewListGroup.Location = new System.Drawing.Point(0, 0);
this._uploadNewListGroup.Margin = new System.Windows.Forms.Padding(5);
this._uploadNewListGroup.Name = "_uploadNewListGroup";
this._uploadNewListGroup.Size = new System.Drawing.Size(1014, 104);
this._uploadNewListGroup.TabIndex = 17;
this._uploadNewListGroup.Text = "Upload New List";
//
// _uploadButton
//
this._uploadButton.FieldName = null;
this._uploadButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this._uploadButton.IsChanged = false;
this._uploadButton.Location = new System.Drawing.Point(466, 68);
this._uploadButton.Name = "_uploadButton";
this._uploadButton.Number = 0;
this._uploadButton.Size = new System.Drawing.Size(75, 23);
this._uploadButton.TabIndex = 19;
this._uploadButton.Text = "Upload";
this._uploadButton.UseVisualStyleBackColor = false;
this._uploadButton.Click += new System.EventHandler(this.OnUploadButtonClick);
//
// _browseButton
//
this._browseButton.FieldName = null;
this._browseButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this._browseButton.IsChanged = false;
this._browseButton.Location = new System.Drawing.Point(927, 40);
this._browseButton.Name = "_browseButton";
this._browseButton.Number = 0;
this._browseButton.Size = new System.Drawing.Size(75, 23);
this._browseButton.TabIndex = 18;
this._browseButton.Text = "Browse";
this._browseButton.UseVisualStyleBackColor = false;
this._browseButton.Click += new System.EventHandler(this.OnBrowseButtonClick);
//
// _filePathTextBox
//
this._filePathTextBox.BackColor = System.Drawing.SystemColors.Control;
this._filePathTextBox.DefaultValue = null;
this._filePathTextBox.EnabledField = null;
this._filePathTextBox.FieldName = null;
this._filePathTextBox.IsChanged = true;
this._filePathTextBox.Location = new System.Drawing.Point(79, 42);
this._filePathTextBox.Name = "_filePathTextBox";
this._filePathTextBox.ReadOnly = true;
this._filePathTextBox.Size = new System.Drawing.Size(839, 20);
this._filePathTextBox.TabIndex = 17;
this._filePathTextBox.UseSystemPasswordChar = false;
this._filePathTextBox.ValidityCheck = 0;
//
// _filePathLabel
//
this._filePathLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this._filePathLabel.AutoSize = true;
this._filePathLabel.FieldName = null;
this._filePathLabel.IsChanged = false;
this._filePathLabel.Location = new System.Drawing.Point(6, 47);
this._filePathLabel.Name = "_filePathLabel";
this._filePathLabel.Size = new System.Drawing.Size(51, 13);
this._filePathLabel.TabIndex = 16;
this._filePathLabel.Text = "File Path:";
//
// _listTypeLabel
//
this._listTypeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this._listTypeLabel.AutoSize = true;
this._listTypeLabel.FieldName = null;
this._listTypeLabel.IsChanged = false;
this._listTypeLabel.Location = new System.Drawing.Point(6, 20);
this._listTypeLabel.Name = "_listTypeLabel";
this._listTypeLabel.Size = new System.Drawing.Size(53, 13);
this._listTypeLabel.TabIndex = 15;
this._listTypeLabel.Text = "List Type:";
//
// _listTypeComboBox
//
this._listTypeComboBox.DefaultValue = null;
this._listTypeComboBox.FieldName = null;
this._listTypeComboBox.IsChanged = false;
this._listTypeComboBox.Location = new System.Drawing.Point(79, 16);
this._listTypeComboBox.Name = "_listTypeComboBox";
this._listTypeComboBox.Size = new System.Drawing.Size(252, 20);
this._listTypeComboBox.TabIndex = 14;
this._listTypeComboBox.Text = "_listTypeComboBox";
this._listTypeComboBox.ValidityCheck = 0;
//
// _uploadHistory
//
this._uploadHistory.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this._uploadHistory.Controls.Add(this._dataGrid);
this._uploadHistory.Controls.Add(this._refreshButton);
this._uploadHistory.Controls.Add(this._showOnlyOneCheckBox);
this._uploadHistory.Controls.Add(this._typeLabel);
this._uploadHistory.Controls.Add(this._historyTypeComboBox);
this._uploadHistory.Dock = System.Windows.Forms.DockStyle.Fill;
this._uploadHistory.GroupBoxHeader = "Upload History";
this._uploadHistory.IsAutoVisibilityEnabled = false;
this._uploadHistory.Location = new System.Drawing.Point(0, 0);
this._uploadHistory.Margin = new System.Windows.Forms.Padding(5);
this._uploadHistory.Name = "_uploadHistory";
this._uploadHistory.Size = new System.Drawing.Size(1014, 303);
this._uploadHistory.TabIndex = 18;
this._uploadHistory.Text = "Upload History";
//
// _dataGrid
//
this._dataGrid.AllowDelete = Janus.Windows.GridEX.InheritableBoolean.True;
this._dataGrid.AllowEdit = Janus.Windows.GridEX.InheritableBoolean.False;
this._dataGrid.ColumnAutoResize = true;
_dataGrid_DesignTimeLayout.LayoutString = resources.GetString("_dataGrid_DesignTimeLayout.LayoutString");
this._dataGrid.DesignTimeLayout = _dataGrid_DesignTimeLayout;
this._dataGrid.Dock = System.Windows.Forms.DockStyle.Bottom;
this._dataGrid.DynamicFiltering = true;
this._dataGrid.EnableGridDisabledRows = false;
this._dataGrid.FilterRowUpdateMode = Janus.Windows.GridEX.FilterRowUpdateMode.WhenValueChanges;
this._dataGrid.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this._dataGrid.HideSelection = Janus.Windows.GridEX.HideSelection.HighlightInactive;
this._dataGrid.Location = new System.Drawing.Point(3, 59);
this._dataGrid.Margin = new System.Windows.Forms.Padding(2);
this._dataGrid.Name = "_dataGrid";
this._dataGrid.Size = new System.Drawing.Size(1008, 241);
this._dataGrid.TabIndex = 24;
this._dataGrid.ValidateRowFunc = null;
this._dataGrid.InitCustomEdit += new Janus.Windows.GridEX.InitCustomEditEventHandler(this.grdCookies_InitCustomEdit);
this._dataGrid.EndCustomEdit += new Janus.Windows.GridEX.EndCustomEditEventHandler(this.grdCookies_EndCustomEdit);
//
// _refreshButton
//
this._refreshButton.FieldName = null;
this._refreshButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this._refreshButton.IsChanged = false;
this._refreshButton.Location = new System.Drawing.Point(927, 18);
this._refreshButton.Name = "_refreshButton";
this._refreshButton.Number = 0;
this._refreshButton.Size = new System.Drawing.Size(75, 23);
this._refreshButton.TabIndex = 20;
this._refreshButton.Text = "Refresh";
this._refreshButton.UseVisualStyleBackColor = false;
this._refreshButton.Click += new System.EventHandler(this.OnRefreshButtonClick);
//
// _showOnlyOneCheckBox
//
this._showOnlyOneCheckBox.FieldName = null;
this._showOnlyOneCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this._showOnlyOneCheckBox.IsChanged = false;
this._showOnlyOneCheckBox.Location = new System.Drawing.Point(346, 19);
this._showOnlyOneCheckBox.Name = "_showOnlyOneCheckBox";
this._showOnlyOneCheckBox.Size = new System.Drawing.Size(104, 23);
this._showOnlyOneCheckBox.TabIndex = 23;
this._showOnlyOneCheckBox.Text = "Show Only Active";
this._showOnlyOneCheckBox.UseVisualStyleBackColor = false;
this._showOnlyOneCheckBox.ValidityCheck = 0;
//
// _typeLabel
//
this._typeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this._typeLabel.AutoSize = true;
this._typeLabel.FieldName = null;
this._typeLabel.IsChanged = false;
this._typeLabel.Location = new System.Drawing.Point(6, 23);
this._typeLabel.Name = "_typeLabel";
this._typeLabel.Size = new System.Drawing.Size(53, 13);
this._typeLabel.TabIndex = 21;
this._typeLabel.Text = "List Type:";
//
// _historyTypeComboBox
//
this._historyTypeComboBox.DefaultValue = null;
this._historyTypeComboBox.FieldName = null;
this._historyTypeComboBox.IsChanged = false;
this._historyTypeComboBox.Location = new System.Drawing.Point(79, 21);
this._historyTypeComboBox.Name = "_historyTypeComboBox";
this._historyTypeComboBox.Size = new System.Drawing.Size(252, 20);
this._historyTypeComboBox.TabIndex = 20;
this._historyTypeComboBox.Text = "adminComboBox1";
this._historyTypeComboBox.ValidityCheck = 0;
//
// SuspiciousListManagementDialog
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1014, 411);
this.Name = "SuspiciousListManagementDialog";
this.Text = "SuspiciousListManagementDialog";
((System.ComponentModel.ISupportInitialize)(this.btnHelp)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.LocalizedFormBasePanel)).EndInit();
this.LocalizedFormBasePanel.ResumeLayout(false);
this._layoutRootSplitContainer.Panel1.ResumeLayout(false);
this._layoutRootSplitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this._layoutRootSplitContainer)).EndInit();
this._layoutRootSplitContainer.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this._uploadNewListGroup)).EndInit();
this._uploadNewListGroup.ResumeLayout(false);
this._uploadNewListGroup.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this._uploadHistory)).EndInit();
this._uploadHistory.ResumeLayout(false);
this._uploadHistory.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this._dataGrid)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer _layoutRootSplitContainer;
private Admin.CustomControl.GenericGroupBox _uploadNewListGroup;
private Admin.CustomControl.AdminButton _uploadButton;
private Admin.CustomControl.AdminButton _browseButton;
private Admin.CustomControl.AdminTextBox _filePathTextBox;
private Admin.CustomControl.AdminLabel _filePathLabel;
private Admin.CustomControl.AdminLabel _listTypeLabel;
private Admin.CustomControl.AdminComboBox _listTypeComboBox;
private Admin.CustomControl.GenericGroupBox _uploadHistory;
private Admin.CustomControl.AdminButton _refreshButton;
private Admin.CustomControl.AdminCheckBox _showOnlyOneCheckBox;
private Admin.CustomControl.AdminLabel _typeLabel;
private Admin.CustomControl.AdminComboBox _historyTypeComboBox;
private AdminGridEX _dataGrid;
}
我缺乏想法,所以我很乐意接受任何建议或建议。
提前致谢!
答案 0 :(得分:2)
据我所知,没有办法将自定义控件实现为Janus数据网格的单元格。因此,我提出了我庞大的解决方案: 我为链接和文件名定义了单独的列。 点击链接的实施也具有挑战性:
private void OnLoad(object sender, EventArgs e)
{
_listTypeComboBox.DataSource = AllTypesDataSource;
_dataGrid.LinkClicked += OnDataGridLinkClicked;
}
void OnDataGridLinkClicked(object sender, ColumnActionEventArgs e)
{
var dg = (GridEX)sender;
var wrapper = (SuspiciousListUploadInfoWrapper)dg.CurrentRow.DataRow;
wrapper.FileOperator.LinkCommand.Execute(wrapper);
}
点击执行是通过演示者定义的: