Multirow10 如何代码实现更好列类型及绑定添加Event事件
本帖最后由 xiaoaj 于 2021-6-4 21:55 编辑动态更改列的控件类型如何实现?类似以下语句
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.ButtonEditor("代替有り")
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.TextEditor
旧版本4.0的KeyDown事件在文本框编辑状态下响应,
但是在10.0文本框进入编辑状态下不响应KeyDown事件,
想获取到当前编辑状态下的控件,添加绑定KeyDown事件,
如何实现?
可以用MultiRow上的EditingControlShowing事件
this.gcMultiRow1.EditingControlShowing += new System.EventHandler<GrapeCity.Win.MultiRow.EditingControlShowingEventArgs>(this.gcMultiRow1_EditingControlShowing);
private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
{
// remove old event handler
e.Control.KeyDown -= this.PrintKeyKode;
// add new event
e.Control.KeyDown += this.PrintKeyKode;
}
private void PrintKeyKode(object sender,KeyEventArgs args)
{
Debug.WriteLine(args.KeyCode);
}
Richard.Ma 发表于 2021-5-28 14:59
可以用MultiRow上的EditingControlShowing事件
动态更改列的控件类型如何实现? 本帖最后由 xiaoaj 于 2021-5-28 15:37 编辑
Richard.Ma 发表于 2021-5-28 14:59
可以用MultiRow上的EditingControlShowing事件
按照您提示的方法可以实现,但是由于没有RemoveHandler掉,多次进入后方法会被掉好几次。哦,看到了,先remove再添加。可以了 好的 Richard.Ma 发表于 2021-5-28 16:17
好的
动态更改列的控件类型如何实现? 改列类型很简单var template = this.gcMultiRow1.Template;template.Row.Cells.RemoveAt(0);
template.Row.Cells.Insert(0, new TextBoxCell());
this.gcMultiRow1.Template = template; Richard.Ma 发表于 2021-5-28 18:22
改列类型很简单var template = this.gcMultiRow1.Template;template.Row.Cells.RemoveAt(0);
template.Row ...
同一列不同行支持不同的列类型吗?根据您提示的代码,只能修改整个列的类型。目前的业务处理需要不同行不同列类型,比如第一行是文本第二行是按钮。 你好,这个目前没有办法支持 动态更改列的控件类型如何实现?类似以下语句
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.ButtonEditor("代替有り")
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.TextEditor
这种只能根据业务需求来更改代码实现。
比如你这种,应该就是某种情况下可以编辑,另外一种情况设置成固定值。把ReadOnly设置成True就好了。
如果后续有点击动作的话,需要设定背景色,设定鼠标点击动作。做出Button的效果就行。
因为旧的ElTable就是一个表格,可以动态设定某个单元格的类型。但是MR10是一种基于模板的控件。单元格类型是以列为单位设定的。
如果项目很复杂,需要实现相同的效果,可以尝试Spread。
页:
[1]
2