Introduction
I remember how annoying it was in Visual Basic 6 to manually set the maximum allowed length of textboxes according to the maximum length of the table column where the data was going to be stored.
Now, when working with the Microsoft .NET Framework, we have ways to dynamically set the maximum allowed length of textboxes.
In this article, we are going to see how to set the maximum allowed length by getting the correct value from the DataTable
where the data is stored.
Background
We need to obtain the schema information of the table to know the maximum allowed length of the data column. So, we are going to use a DataAdapter
property called MissingSchemaAction
. For more information on this property, refer to this page: http://msdn2.microsoft.com/en-us/library/49z48hxc.aspx.
Using the Code
First of all, we need to get the data (I assume that the connection is opened elsewhere):
public DataTable GetData(SqlConnection oConnection,string SqlQuery)
{
SqlCommand oCommand;
SqlDataAdapter oDataAdapter;
DataTable dtData=null;
oCommand = new SqlCommand(SqlQuery, oConnection);
oDataAdapter = new SqlDataAdapter(oCommand);
oDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
oDataAdapter.Fill(dtData);
oDataAdapter.Dispose();
oCommand.Dispose();
return dtData;
}
The textboxes added in the form have to be named like the columns of the table, so we can find them according to the DataTable
column names.
private void SetMaxLengthText()
{
foreach (DataColumn dc in dtDatos.Columns)
{
Control[] control;
control = this.Controls.Find(dc.ColumnName, true);
if (control.Length > 0)
((TextBox)control[0]).MaxLength = dc.MaxLength;
}
}