a) 表单列配置表将线路工程表单代码设为“612”,其中就是数据库对应字段“ET_ID”。”ET_Config” 和“ET_ConfigItem”用来表示该表单列信息的ID和名称。ET_ConfigType用来表示该列的类型,如:字符型、数字型、布尔型、下拉列表型等等。这样就可以规范填写表单的信息。其中,“KeyWord”字段有着重要的作用,他是动态表单中列与实体类对应关系的关键。通过该字段的信息我们才能将表单中信息与其含义相对应。b) 表单数据存储表表单的数据信息将以二维表的形式进行储存。表单的列信息将作为“Y”方向,行标识(即“X”方向)将采用具有唯一性的Guid编码来实现。字段“o_Guid”作为行的唯一标识,字段“ET_ConfigID”作为列的唯一性标识。字段“ET_Value”存放的就是所对应的值。在数据库设计方面,还有其他表辅助表如:CDMS_EntityTypeConfig、CDMS_EntityTypeConnection等数据库表,来辅助动态表单功能,使其功能更加的完善。在此不做详细介绍了。(2). 程序的实现动态的表单的关键就是对应关系的建立。在程序上,有用反射类方法进行实现的,有通过制定表单规则进行辨别实现的。
解决方案 »
- Request.QueryString 未将对象引用设置到对象的实例 NullRefrenceException
- 点击按钮后如何保存页面参数不丢失
- Lucene 问题。高手请进~!
- 请教高手啊。。。
- 分页问题
- 唉,不知道要怎么做,郁闷!!!!!!!!!
- 怎么做日常自动统计?求思路……
- 如何以编成的方式实现动态的改变DataGrid控件列的页眉文本
- 怎样实现窗口之间的数据更新?高分相----送---!
- 各位老师,请发表一下高见!!!关于TreeView控件的传递值问题......
- asp.net中给DataGrid加一行,合计功能 在线等。。。
- URL传参问题---把一个加密的字符串传过去后+号被截断,变成换行
Panel div2 = new Panel();
Label Text1 = new Label();
string Str_Size = DataS.Tables[0].Rows[0][7].ToString();
string Str_Color = DataS.Tables[0].Rows[0][6].ToString();
Text1.Text = DataS.Tables[0].Rows[0][8].ToString(); if (Str_Size == "-1")
{
Str_Size = "12";
}
if (Str_Color == "-1")
{
Str_Color = "#000000";
}
Text1.Font.Size = new FontUnit(Str_Size);
Text1.ForeColor = System.Drawing.ColorTranslator.FromHtml(Str_Color);
div2.Controls.Add(Text1);
div2.Style["margin-top"] = yStr;
div2.Style["margin-left"] = xStr;
div2.Style["position"] = "absolute"; form1.Controls.Add(div2);
break; case "3": // 单文本输入框
Panel div3 = new Panel();
TextBox MyTextBox = new TextBox();
if (myWidth != "px")
{
MyTextBox.Style["width"] = myWidth;
}
if (myHeight != "px")
{
MyTextBox.Style["height"] = myHeight;
}
MyTextBox.ID = DataS.Tables[0].Rows[0][6].ToString();
SArr = DataS.Tables[0].Rows[0][9].ToString();
if (SArr != "")
{
//MyTextBox.Style["overflow"] = SArr;
MyTextBox.TextMode = System.Web.UI.WebControls.TextBoxMode.MultiLine;
}
div3.Style["margin-top"] = yStr;
div3.Style["margin-left"] = xStr;
div3.Style["position"] = "absolute";
div3.Controls.Add(MyTextBox);
form1.Controls.Add(div3);
break;
所以我很懒,直接在一个Data里写ini文件的文件内容.
取data后当成是ini文件来读^
他的数据是这样的
name1=xx
name2=xx2
name3=xx\nxx4\\xx
取得数据后,就根据Data的内容来取得这些name1,name2,nam3了 \n会被替换为换行, \\会被替换为\
所以你6里有值么?
例如:switch (tablename)
{
case "BrowserDate": //日期控件
if (textvalue.Attributes["RelateControlID"] != null)
{
string RelateControlID = textvalue.Attributes["RelateControlID"].Value;
textvalue.Attributes.Add("onclick", "SelectDateTime('" + RelateControlID + "')");// 添加点击事件 }
break;
case "BrowserForm": //弹出树菜单
if (textvalue.Attributes["RelateControlID"] != null)
{
string RelateControlID = textvalue.Attributes["RelateControlID"].Value;
textvalue.Attributes.Add("onclick", "SelectTreeNode('" + RelateControlID + "')");// 添加点击事件 }
break;
case "Return": //返回上一页
if (textvalue.Attributes["RelateControlID"] != null)
{
string RelateControlID = textvalue.Attributes["RelateControlID"].Value;
textvalue.Attributes.Add("onclick", "javascript:history.go(-1);");// 添加点击事件 }
break;
case "InsertRecord": //插入
//杜增加频率
string pinlv = "";
try
{
pinlv = textvalue.Attributes["reportfrequency"].Value;
}
catch
{
pinlv = "day";
}
textvalue.Attributes.Add("onclick", "__doPostBack_Ex('" + textvalue.Id + "','InsertRecord_" + pinlv + "')");// 添加点击事件
//}
break;
default:
break;
}