Retrieve value from databound controls Get/Retrieve value from databound textbox, label, gridview ...

Trong asp.net, thật dễ dàng để load và hiển thị một giá trị từ CSDL bằng các Databound Controls . Nhưng đường đời không êm ái bao giờ, bạn muốn lấy giá trị databound control nào đó để phục vụ cho việc xử lý bên dưới Code behind cũng không phải là chuyện dễ.

Hôm nay s chia sẽ tí kinh nghiệm về vấn đề này qua những ví dụ dưới đây. Cách dễ nhất là dùng FindControl("ID"). Đầu tiên là ví dụ lấy values của databound textbox trong Repeater.
foreach (RepeaterItem item in Repeater1.Items)
{
TextBox txt = item.FindControl("txtName") as TextBox;
Name = txt.Text;
}
Giải thích: bạn tạo một item (RepeaterItem item in Repeater1.Items) sau đó duyệt hết tất cả các item có ID là "txtName" bằng FindControl("txtName"). Trả nó về kiểu textbox (as TextBox). Và tới đây bạn có thể thao tác như một textbox bình thường.

Đây là một cách khác:
for (int i = 0; i < Repeater1.Items.Count; i++)
{
TextBox txt = Repeater1.Items[i].FindControl("txtName") as TextBox;
if (txt != null)
Name = txt.Text;
}

Tiếp theo là lấy value của một ô (cell) trong GridView.
foreach(DataGridItem item in GridView1.Items)
{
TextBox Text1 = (TextBox)item.FindControl("txtName");
string exValue = Text1.Text;
}
foreach (GridViewRow row in GridView1.Rows)
{
TextBox txtQuantity = (TextBox)row.Cells[indexColumn].FindControl("txtName");
string exValue = Text1.Text;
}
indexColumn : Số thứ tự của cột chứa txtName

Những cách trên chỉ lấy giá trị của databound controls xuống code-behide bên dưới xử lý. Nếu muốn xử lý xong và trả về đúng control đó thì bạn tham khảo bài viết sau:
Lấy, xử lý và thay đổi giá trị Databound Controls