有没有办法将sql数据类型加载到下拉列表中,而无需编写自己的方法

时间:2014-01-28 21:55:39

标签: c# asp.net sql sql-server

我想在Sql Management Studio的“导入/导出向导”的数据映射部分创建类似于sql数据类型下拉列表的下拉列表。

有没有人知道如何在不编写自定义代码的情况下执行此操作?在System.Data.Sql中是否会有一个方法调用来执行此操作?

3 个答案:

答案 0 :(得分:1)

仅仅为了子孙后代,这并不难做到 - 在Linqpad中运行此操作并引用System.Data

void Main()
{
     Console.WriteLine(GetSqlTypes());
}

Dictionary<string,Type> GetSqlTypes()
{
   var types=new Dictionary<string,Type>();
   var a = Assembly.Load("System.Data");
     foreach (var sqlType in a.GetTypes().Where(t=>t.Namespace=="System.Data.SqlTypes" 
                    && t.Name.StartsWith("Sql")
                     && !t.Name.Contains("Exception")
                     && !t.Name.Contains("Schema")
                     && !t.Name.Contains("Stream")))
         {
            types.Add(sqlType.Name,sqlType);
         }
         return types;
}

所以你可以将你的下拉列表绑定到GetSqlTypes:

    ddlTypes.DataSource = GetSqlTypes();
    ddlTypes.DataTextField = "Value";
    ddlTypes.DataValueField = "Key";
    ddlTypes.DataBind();

当然这是一个纯粹的蛮力黑客,毫无疑问其他人有一个更优雅的方式来做到这一点,但这至少会让你开始和运行。

答案 1 :(得分:1)

System.Enum.GetValues(typeof运算(System.Data.SqlDbType));

答案 2 :(得分:0)

没有内置方法可以做到这一点。