大家好,Stack Overflowers。我在这里有点困境。我需要获得你可以输入字段的最大字符数,但是我没有成功,Google没有产生类似于我需要的任何字符
这是我的代码
lvwDestination.Columns.Add("Fields in Database", 150, HorizontalAlignment.Left);
lvwDestination.Columns.Add("DataType", 100, HorizontalAlignment.Left);
lvwDestination.Columns.Add("Max", 100, HorizontalAlignment.Left);
for (int i = 0; i < DataTable.Columns.Count; i++)
{
_lvwItem = new ListViewItem(DataTable.Columns[i].ColumnName, 0);
_lvwItem.Name = DataTable.Columns[i].ColumnName;
_lvwItem.SubItems.Add(DataTable.Columns[i].DataType.Name.ToString());
_lvwItem.SubItems.Add(DataTable.Columns[i].MaxLength.ToString());
lvwDestination.Items.AddRange(new ListViewItem[] { _lvwItem });
}
现在你可以看到我试过了
_lvwItem.SubItems.Add(DataTable.Columns[i].MaxLength.ToString());
但是对于每一列,唯一能提出的是-1。我还确保我的列确实具有属性字段大小属性。 .ColumnName和.DataType工作正常,但.MaxLength始终生成-1。 提前感谢任何可能提出解决方案的人。
答案 0 :(得分:2)
在调用OledbDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
方法之前尝试设置DataAdapter
的{{1}}以下属性...
答案 1 :(得分:1)
我对SQL数据库表进行了快速测试 - 看起来没有从数据库中检索MaxLength属性,并且除非用户特别设置,否则总是将其值设置为-1:
string sql = "select top 10 * from [TestTable]";
string connStr = ConfigurationManager.ConnectionStrings["DbConnString"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable data = new DataTable();
da.Fill(data);
foreach (DataColumn col in data.Columns)
{
Console.WriteLine(
string.Format("{0}\t{1}\t{2}",
col.ColumnName,
col.DataType.ToString(),
col.MaxLength
)
);
}
Console.ReadLine();
}