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

    xiaoxiao2022-06-23  16

    自定义控件的编辑框引用自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; }
    转载请注明原文地址: https://ju.6miu.com/read-1123326.html

    最新回复(0)