自定义控件赋值与取值
本帖最后由 wangyiwangyi 于 2016-11-2 15:32 编辑http://gcdn.gcpowertools.com.cn/data/attachment/forum/201611/02/150334rs174s1v8flshslm.png 如上图已经实现自定义控件加载到单元格,(我参照:http://blog.gcpowertools.com.cn/ ... E%A7%E4%BB%B6-.aspx)
现有以下二个问题:
1、读取控件多选值(取得的数据值需要保存到数据库)
官方论坛的帖子查询未果,麻烦提供一个DEMO。自定控件取值。
2、查看状态下只看到值,双击显示下拉(与FarPoint.Web.Spread.ComboBoxCellType 效果)
现效果是: http://gcdn.gcpowertools.com.cn/data/attachment/forum/201611/02/151525efs7ks57y1v7fgh7.png 有输入框。
FarPoint.Web.Spread.ComboBoxCellType效果是:http://gcdn.gcpowertools.com.cn/data/attachment/forum/201611/02/151629wn583mkmrgmkr6g0.png ,http://gcdn.gcpowertools.com.cn/data/attachment/forum/201611/02/151657vcbx1m177bwnh00h.png
您好,可否把您的demo发过来,这样处理起来更快一些 dexteryao 发表于 2016-11-2 17:20
您好,可否把您的demo发过来,这样处理起来更快一些
因工程文件较大且包含EXT内容,我只发控件对应文件,你加入你工程中即可,页面后台调用如下:
1、在Farpoint所在页面定义TestWebControlInCell
public class TestWebControlInCell : FarPoint.Web.Spread.BaseCellType
{
public override Control PaintCell(string id, TableCell parent, FarPoint.Web.Spread.Appearance style, FarPoint.Web.Spread.Inset margin, object value, bool upperLevel)
{
Project_Report_ManualReportNew_OrgCommBox buc = (Project_Report_ManualReportNew_OrgCommBox)parent.Page.LoadControl("OrgCommBox.ascx");
buc.ID = "NewID";
return buc;
}
public override Control GetEditorControl(string id, TableCell parent, FarPoint.Web.Spread.Appearance style, FarPoint.Web.Spread.Inset margin, object value, bool upperLevel)
{
return null;
}
}
2、在Page_Load方法中加入
TestWebControlInCell usercontrol = new TestWebControlInCell();
this.FpSpread1.ActiveSheetView.Cells.CellType = usercontrol;
您好,我这里仍在调试,明天给您答复。 您好,由于时间关系,我这里简单实现了下您的需求,具体细节您还需要修改下。
TestWebControlInCell usercontrol = new TestWebControlInCell();
usercontrol.SpreadClientID = FpSpread1.ClientID;
public class TestWebControlInCell : FarPoint.Web.Spread.GeneralCellType
{
public string SpreadClientID { get; set; }
public override Control GetEditorControl(string id, TableCell parent, FarPoint.Web.Spread.Appearance style, FarPoint.Web.Spread.Inset margin, object value, bool upperLevel)
{
Table table = new Table();
table.CellPadding = 0;
table.CellSpacing = 0;
table.BorderStyle = BorderStyle.None;
table.BorderWidth = new Unit(0, UnitType.Pixel);
table.Width = new Unit(100, UnitType.Percentage);
TableRow row = new TableRow();
TableCell cell = new TableCell();
cell.VerticalAlign = VerticalAlign.Middle;
cell.HorizontalAlign = HorizontalAlign.Left;
OrgCommBox buc = (OrgCommBox)parent.Page.LoadControl("OrgCommBox.ascx");
buc.SpreadClientID = this.SpreadClientID;
//buc.ID = "NewID" + parent.ID;
cell.Controls.Add(buc);
row.Cells.Add(cell);
table.Rows.Add(row);
return table;
}
}
<script>
$(function () {
var activeRow, activeCol;
var mutipSel = $('#ms').change(function () {
// console.log($(this).val());
}).multipleSelect({
width: '100%',
onClose: function () {
var spread = document.getElementById("<%=SpreadClientID %>");
var texts = mutipSel.data('multipleSelect').getSelects("text")
spread.Cells(activeRow, activeCol).SetValue(texts);
console.log($('#ms').val());
},
onOpen: function () {
var spread = document.getElementById("<%=SpreadClientID %>");
activeRow = spread.ActiveRow;
activeCol = spread.ActiveCol;
var values = spread.GetValue(activeRow, activeRow).split(",");
//var texts = mutipSel.data('multipleSelect').setSelects(values)
}
});
});
</script>
GetEditorControl方法是为了在编辑模式下弹出下拉选择,但现在的效果是,下拉多选显示异常。 应该是 多选框那里的代码没执行。您吧 $(function () { 方法换成 setTimeout试试 本帖最后由 wangyiwangyi 于 2016-11-29 11:43 编辑
$(function () { 方法换成 setTimeout还是不行,
根据我发的DEMO,请给我提供一个简单的下拉多选择功能实现赋值与取值的例子。本需求我想很多人会用到,麻烦你们的技术提供一个完整的DEMO,谢谢!
制作完整Demo会需要一些时间,我处理完后给您答复。 请看附件
页:
[1]
2