自己写若干个控件,想让用户添加这些控件的时候自动实现数据绑定。
例如:有个控件邦定金额这个数据,那么添加到窗体设计器时,就自动绑定了这个窗体数据源中的金额的数据。
窗体中的数据可以形成一个标准化的接口。这些邦定需要实现允许修改,也就是允许用户修改成其它的数据邦定或者不邦定。
例如:有个控件邦定金额这个数据,那么添加到窗体设计器时,就自动绑定了这个窗体数据源中的金额的数据。
窗体中的数据可以形成一个标准化的接口。这些邦定需要实现允许修改,也就是允许用户修改成其它的数据邦定或者不邦定。
解决方案 »
- WinForm的ListBox的项选择问题
- C# 求 C# 源码 过滤 Html 标记,我只要Html 中的文本。。【谢谢】
- Visual Studio 2005里面的模板都没有了,
- asp.net 分页显示问题 急!!!
- 'WinMain' : function cannot be overloaded 这个是什么错误???
- 关于打印(Winform)?
- .NET 编程过程中如何做应用程序接口
- 如何确定单击了哪个 TreeView 节点??在线等待中。。。。
- 高分求解线程问题!
- 打印机信息相关问题?
- 请问C#的enum可以跟java的enum一样使用foreach循环出出所有值吗?
- C#数据库
这个可以吗?
例如要绑定表中的CounterCode字段,TextBox控件的Name为txtCounterCode.以便自动绑定时根据控件名获取属性。
2、遍历控件,根据控件名绑定数据。
下面的这个是一个简单结合实体类的自动绑定例子:
/// <summary>
/// 自动加载数据
/// </summary>
/// <param name="model">实体类</param>
/// <param name="isReadonly">加载数据后控件是否只读</param>
void loadData(BuyNow.Model.Counter model, bool isReadonly)
{
foreach (Control col in groupBox1.Controls)
{
if (col.GetType() != typeof(TextBox))continue;
((TextBox)col).ReadOnly = isReadonly;
col.Text = model.GetType().GetProperty(col.Name.Substring(4)).GetValue(model, null).ToString();
//col.Name.Substring(4):根据控件名获取相应的表字段
}
}3、是否自动可以通过一个属性来实现。
protected void Page_Load(object sender, EventArgs e)
{
String projectid = Request.Params["projectid"].ToString();
try
{
////此时需要获取传过来的excel文件
fileName = Request.Params["filename"].ToString();
////对excel的操作
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
string query = "SELECT * FROM [Sheet1$]";
OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(strConn));
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
DataSet myDataSet = new DataSet();
DataTable dt = new DataTable();
String excelcolumn = "";
try
{
oleAdapter.Fill(myDataSet, "[Sheet1$]");
dt = myDataSet.Tables[0];
int columnCount = dt.Columns.Count;
//////此处为从excel中读取所有的列
for (int i = 0; i < columnCount; i++)
{
if ("".Equals(excelcolumn))
{
excelcolumn = dt.Columns[i].ToString();
}
else excelcolumn = excelcolumn + "," + dt.Columns[i].ToString();
}
}
catch (Exception e1)
{
Response.Write(e1.Message);
}
////获取excel列的数组
excel = excelcolumn.Split(',');
////将tb_assist表中的列按中文读出
lvsh_dal ld = new lvsh_dal();
DataTable chinese = new DataTable();
chinese = ld.excelChinese(projectid);//dt中包括1:中文列名;2:英文列名 Table tb = new Table();
tb.ID = "xe";
for (int i = 0; i < excel.Length; i++)
{
TableRow tr = new TableRow();
tb.Controls.Add(tr);
TableCell tc = new TableCell();
TableCell tc2 = new TableCell();
tr.Controls.Add(tc);
tr.Controls.Add(tc2);
Label l = new Label();
l.ID = "label" + excel[i];
l.Width = 60;
l.Visible = true;
l.Text = excel[i];
tc.Controls.Add(l);
DropDownList ddl = new DropDownList();
ddl.ID = excel[i];
ddl.Width = 130;
ddl.Items.Add(new ListItem(" "));
ddl.Items.Add(new ListItem("姓名","name"));
ddl.Items.Add(new ListItem("身份证", "identityid"));
foreach (DataRow dr in chinese.Rows)
{
ddl.Items.Add(new ListItem(dr[0].ToString(), dr[1].ToString()));
}
ddl.Visible = true;
tc2.Controls.Add(ddl);
}
tb.Visible = true;
tb.Width = 300;
Page.Form.Controls.Add(tb);
}
catch
{
Response.Write("请选择正确的Excel!");
}
}
继承的时候,拖几个控件改一改名字就ok了。