C# 自定义控件字段绑定示例

自定义控件的编辑框引用自Devexpress的TextEdit控件.定义了两个DataSet类型,一个存放记录数据源,一个存放字段数据源

主界面调用字段界面时取两个数据源,
ds为记录数据源
dm为字段数据源

                SysData.DataHelper myHelper = new SysData.DataHelper();
                Hashtable ht = new Hashtable();
                ht.Add("@id", -1);
                DataSet ds = myHelper.GetDs(strSQL, ht);
                DataSet dm = myHelper.GetDs(strSQL, ht,true);
                BinSource.DataSource = ds.Tables[0];
                DBClass.BindControl(gBox, BinSource.DataSource,dm.Tables[0]);
                blnBind = true;
</pre></div><div style="font-family:Arial; font-size:14px; line-height:22.4px">DBEdit自定义控件的字段绑定方式其中Mask.EditMask的设置尚未处理完成<pre name="code" class="csharp">            txtEdit.DataBindings.Clear();
            txtEdit.DataBindings.Add("EditValue", DataSource, DataField);

            DataTable dt = (DataTable)DataSchema;
            //判断字段类型,小数/整数/文本
            foreach (DataColumn dc in dt.Columns)
            {
                if (dc.Caption == DataField)
                {
                    //判断是否为空
                    Request = dc.AllowDBNull;
                    if (Request) label.ForeColor = Color.Black; else label.ForeColor = Color.Red;
                    //设置最大长度
                    txtEdit.Properties.MaxLength = dc.MaxLength;
                    //设置输入格式
                    if (dc.DataType == typeof(int) || dc.DataType == typeof(Int16) || dc.DataType == typeof(Int32) || dc.DataType == typeof(Int64))
                    {
                        txtEdit.Properties.Mask.EditMask = "";
                        txtEdit.Properties.Mask.MaskType = MaskType.Numeric;
                    }
                    else if (dc.DataType == typeof(string))
                    {
                        txtEdit.Properties.Mask.MaskType = MaskType.Simple;
                    }
                    //double类型会映射为decimal,待验证
                    else if (dc.DataType == typeof(Single) || dc.DataType == typeof(double) || dc.DataType == typeof(Decimal))
                    {
                        txtEdit.Properties.Mask.EditMask = "";
                        txtEdit.Properties.Mask.MaskType = MaskType.Numeric;
                    }
                    //其他类型暂不处理,待验证
                    //else MessageBox.Show("Other"+dc.DataType.Name);
                }
            }

DataHelper调用源码,此方式为Remoting与WebService的中间件调用
        /// <summary>
        /// 带参数SQL,并返回结果数据集
        /// </summary>
        /// <param name="strSQL">查询语句</param>
        /// <param name="parm">参数</param>
        /// <param name="Schema">是否返回字段映射表</param>
        /// <returns></returns>
        public DataSet GetDs(string strSQL, Hashtable parm, bool Schema=false)
        {
            string err = "";
            if (SysData.SysParam.intConnect == 0)
            {
                ChimService.Service myService = GetService();

                byte[] bytes = DataSetCompression.SerializeData(parm);

                byte[] bUserData = myService.GetOtherByte(ref err, SysData.SysParam.strDB, strSQL, bytes, Schema);
                if (err != "")
                {
                    MessageBox.Show(err, "错误");
                    err = "";
                    return null;
                }
                DataSet ds = DataSetCompression.DecompressionDataSet(bUserData);
                return ds;
            }
            else
            {
                CenterLib.Service obj = GetObj();
                byte[] bUserData = obj.GetOtherByte(ref err, SysData.SysParam.strDB, strSQL, parm);
                if (err != "")
                {
                    MessageBox.Show(err, "错误");
                    err = "";
                    return null;
                }
                DataSet ds = DataSetCompression.DecompressionDataSet(bUserData);
                return ds;
            }
        }

SQLHelper调用参考
       
 /// <summary>
        /// 执行SQL命令 带命令类型 带参数 返回Dataset
        /// </summary>
        /// <param name="connection">SQL连接对象</param>
        /// <param name="commandType">命令类型</param>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数</param>
        /// <returns></returns>
        public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText, bool Schema = false, params SqlParameter[] commandParameters)     //3
        {
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, connection, null, commandType, commandText, commandParameters);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
<pre name="code" class="csharp" style="font-size: 14px; line-height: 22.4px;"><span style="white-space:pre">	</span>    da.Fill(ds);
if (Schema) da.FillSchema(ds, SchemaType.Mapped); cmd.Parameters.Clear(); return ds; }
 
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值