J
Joel Finkel
Folks,
The following code illustrates two methods of obtaining the contents of a DataGrid Item. The function has been bound to the ItemCommand of the DataGridCommandEventHandler. It is invoked by clicking a button within the row.
Note that because I am loathe to hard-code column numbers, as they may change, I at least make the code a bit easier to maintain by setting constants to represent the column numbers I need to use.
In the first example, I get the Address by simply using the Text attribute of e.Item.Cells[].
In the second example, which is the more common in the documentation, I use the two-step process of obtaining the object, e.Item.Cells[].Columns[0] as a TextBox, and then getting its Text attribute.
QUESTION: Why is the second example more common in the documentation when the first method seems to work, is easier to code, and is faster?
QUESTION: Am I missing something terribly important here?
Thanks!
/Joel Finkel
(e-mail address removed)
private void DataGrid1_ItemCommand(object sender, DataGridCommandEventArgs e)
{
const int k_p_Address = 7;
const int k_p_City = 8;
const int k_p_State = 9;
const int k_p_Zip = 10;
const int k_p_Country = 11;
try
{
myAddressCorrector.Address = e.Item.Cells[k_p_Address].Text;
TextBox CityText = (TextBox)e.Item.Cells[k_p_City].Controls[0];
myAddressCorrector.City = CityText.Text;
TextBox StateText = (TextBox)e.Item.Cells[k_p_State].Controls[0];
myAddressCorrector.State = StateText.Text;
TextBox ZipText = (TextBox)e.Item.Cells[k_p_Zip].Controls[0];
myAddressCorrector.Zip = ZipText.Text;
TextBox CountryText = (TextBox)e.Item.Cells[k_p_Country].Controls[0];
myAddressCorrector.Country = CountryText.Text;
myAddressCorrector.CorrectAddress();
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}
The following code illustrates two methods of obtaining the contents of a DataGrid Item. The function has been bound to the ItemCommand of the DataGridCommandEventHandler. It is invoked by clicking a button within the row.
Note that because I am loathe to hard-code column numbers, as they may change, I at least make the code a bit easier to maintain by setting constants to represent the column numbers I need to use.
In the first example, I get the Address by simply using the Text attribute of e.Item.Cells[].
In the second example, which is the more common in the documentation, I use the two-step process of obtaining the object, e.Item.Cells[].Columns[0] as a TextBox, and then getting its Text attribute.
QUESTION: Why is the second example more common in the documentation when the first method seems to work, is easier to code, and is faster?
QUESTION: Am I missing something terribly important here?
Thanks!
/Joel Finkel
(e-mail address removed)
private void DataGrid1_ItemCommand(object sender, DataGridCommandEventArgs e)
{
const int k_p_Address = 7;
const int k_p_City = 8;
const int k_p_State = 9;
const int k_p_Zip = 10;
const int k_p_Country = 11;
try
{
myAddressCorrector.Address = e.Item.Cells[k_p_Address].Text;
TextBox CityText = (TextBox)e.Item.Cells[k_p_City].Controls[0];
myAddressCorrector.City = CityText.Text;
TextBox StateText = (TextBox)e.Item.Cells[k_p_State].Controls[0];
myAddressCorrector.State = StateText.Text;
TextBox ZipText = (TextBox)e.Item.Cells[k_p_Zip].Controls[0];
myAddressCorrector.Zip = ZipText.Text;
TextBox CountryText = (TextBox)e.Item.Cells[k_p_Country].Controls[0];
myAddressCorrector.Country = CountryText.Text;
myAddressCorrector.CorrectAddress();
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}