上一篇介绍了在定义Document Type中的属性时用到的Data Type,当使用dropdown list如何调用外部数据源,可以根据提供的数据连接字符串,sql语句就能实现你想要显示的数据。
其实还可以对其有一些扩展。
例如,数据库连接字符串可以定义在配置文件中,这样的话维护起来变得更方便,而不需要重新修改一下Data Type,如果你的很多Data Type都用到了同一个数据源,修改起来岂不是很烦锁。
如何在创建Data Type的时候,在配置信息里选择数据源,这需要编写一些代码。
1 public class ConnectionStringPicker : DataEditorSettingType 2 { 3 private DropDownList ddl = new DropDownList(); 4 5 private string _val = string.Empty; 6 public override string Value 7 { 8 get 9 { 10 return ddl.SelectedValue; 11 } 12 set 13 { 14 if (!string.IsNullOrEmpty(value)) 15 _val = value; 16 } 17 } 18 19 public override Control RenderControl(DataEditorSetting setting) 20 { 21 ddl.ID = setting.GetName(); 22 ddl.Items.Clear(); 23 for (int i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++) 24 { 25 ddl.Items.Add( 26 new ListItem( 27 ConfigurationManager.ConnectionStrings[i].Name, 28 ConfigurationManager.ConnectionStrings[i].ConnectionString)); 29 } 30 ddl.Items.Insert(0, 31 new ListItem(String.Empty, String.Empty)); 32 33 ddl.SelectedValue = _val; return ddl; 34 } 35 }
将上一篇里的Demo代码略微替换一下
[DataEditorSetting("Connection String", type=typeof(ConnectionStringPicker))] public String ConnectionString { get; set; }
效果
web.config配置信息
1 <connectionStrings> 2 <add name="Sample" connectionString="server=.;database=aspnetdb;userid=user;password=userpass" providerName="System.Data.SqlClient"/> 3 <add name="AnotherSample" connectionString="server=.;database=aspnetdb;userid=user;password=userpass" providerName="System.Data.SqlClient"/> 4 </connectionStrings>