我创建了一个自定义 GridViewTextBoxColumn 来处理以下内容:
1)当不在 EditMode (问题区域)时显示为 Normal TextboxColumn 1)在编辑模式下,我将 AutoComplete 添加到 Cell 以提示用户输入项目列表 2)单击我放置在左侧的椭圆按钮要浏览的文本框(打开一个带有更多列的项目网格的表单)
我已经添加了所有没有问题,甚至可以在单元格上动态添加 BeginEdit 中的 AutoComplte 源(或者我可以在 AutoCompleteTextBoxCellElement 的 CreateChildElements 方法中添加它)
所以会发生以下情况:
我的课是这样的:
public class AutoCompleteTextBoxCell : GridDataCellElement
{
public AutoCompleteTextBoxCell(GridViewColumn column, GridRowElement row)
: base(column, row)
{
}
}
然后我添加这个方法来添加元素,文本框
protected override void CreateChildElements()
{
txtStockCode = new RadTextBoxElement();
this.Children.Add(txtStockCode);
LoadData("Code"); //Adding Auto Complete in this event
}
我还添加了这个,以便我可以排列单元格中的元素。
protected override SizeF ArrangeOverride(SizeF finalSize)
{
RectangleF rect = GetClientRectangle(finalSize);
RectangleF rectEdit = new RectangleF(rect.X, rect.Y, rect.Width - (32 + 1), rect.Height);
RectangleF rectButton = new RectangleF(rectEdit.Right + 1, rectEdit.Y, 32, rect.Height);
if (this.Children.Count >= 2)
{
this.Children[0].Arrange(rectEdit);
this.Children[1].Arrange(rectButton);
}
else
{
rectEdit = new RectangleF(rect.X, rect.Y, rect.Width, rect.Height);
this.Children[0].Arrange(rectEdit);
}
return finalSize;
}
然后回到网格上,我执行以下操作:
enter code here
私人无效grdMain_CellBeginEdit(对象发件人,GridViewCellCancelEventArgs e){如果(e.Column.Name ==“colItem”){
RadButtonElement btnMore = new RadButtonElement();
btnMore.Text = "...";
btnMore.Click += new EventHandler(btnMore_Click);
grdMain.CurrentCell.Children.Add(btnMore);
}
}
这会添加我的按钮,以便我可以在单元格的编辑模式下启动浏览表单。
在 EndEdit 事件中,我删除了按钮。
private void grdMain_CellEndEdit(object sender, GridViewCellEventArgs e)
{
if (e.Column.Name == "colStock")
{
if (this.grdMain.CurrentCell.Children.Count <= 2) //This might be 1 or 2
{
if (grdMain.CurrentCell.Children.Count == 2) // If its two, I need to remove the button
{
if (grdMain.CurrentCell.Children[1] is RadButtonElement)
{
this.grdMain.CurrentCell.Children.RemoveAt(1);
}
//If one, I do nothing for the moment. -- I think.
}
}
}
}
一切都好接受一个问题。
添加单元格后,我假设它会返回到像普通文本框列一样的行为(由于我的继承),但事实并非如此,文本被隐藏 - 我看不到它。
当我单击单元格进入编辑模式时,我输入的文本就在那里。
我确实认为这是我要实现的目标的问题,我认为这是事件链的问题。
谁能告诉我为什么当单元格不处于编辑模式时文本没有显示?
问候约翰