Thêm và xóa hàng tự động trong Gridview
Bài viết sau đây sẽ hướng dẫn các bạn thực hiện thêm và xóa đi một hàng trong Gridview một cách tự động.
Để làm được như vậy, bạn thiết kế như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| <asp:GridView ID= "grvStudentDetails" runat= "server" ShowFooter= "True" AutoGenerateColumns= "False" CellPadding= "4" ForeColor= "#333333" GridLines= "None" OnRowDeleting= "grvStudentDetails_RowDeleting" > <Columns> <asp:BoundField DataField= "RowNumber" HeaderText= "SNo" /> <asp:TemplateField HeaderText= "Student Name" > <ItemTemplate> <asp:TextBox ID= "txtName" runat= "server" ></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText= "Student Age" > <ItemTemplate> <asp:TextBox ID= "txtAge" runat= "server" ></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText= "Student Address" > <ItemTemplate> <asp:TextBox ID= "txtAddress" runat= "server" Height= "55px" TextMode= "MultiLine" ></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText= "Gender" > <ItemTemplate> <asp:RadioButtonList ID= "RBLGender" runat= "server" RepeatDirection= "Horizontal" > <asp:ListItem Value= "M" >Male</asp:ListItem> <asp:ListItem Value= "F" >Female</asp:ListItem> </asp:RadioButtonList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText= "Qualification" > <ItemTemplate> <asp:DropDownList ID= "drpQualification" runat= "server" > <asp:ListItem Value= "G" >Graduate</asp:ListItem> <asp:ListItem Value= "P" >Post Graduate</asp:ListItem> </asp:DropDownList> </ItemTemplate> <FooterStyle HorizontalAlign= "Right" /> <FooterTemplate> <asp:Button ID= "ButtonAdd" runat= "server" Text= "Add New Row" OnClick= "ButtonAdd_Click" /> </FooterTemplate> </asp:TemplateField> <asp:CommandField ShowDeleteButton= "True" /> </Columns> <FooterStyle BackColor= "#507CD1" Font-Bold= "True" ForeColor= "White" /> <RowStyle BackColor= "#EFF3FB" /> <EditRowStyle BackColor= "#2461BF" /> <SelectedRowStyle BackColor= "#D1DDF1" Font-Bold= "True" ForeColor= "#333333" /> <PagerStyle BackColor= "#2461BF" ForeColor= "White" HorizontalAlign= "Center" /> <HeaderStyle BackColor= "#507CD1" Font-Bold= "True" ForeColor= "White" /> <AlternatingRowStyle BackColor= "White" /> </asp:GridView> |
Tiếp theo là việc hiển thị một hàng trong gridview dạng default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| private void FirstGridViewRow() { DataTable dt = new DataTable(); DataRow dr = null; dt.Columns.Add( new DataColumn( "RowNumber" , typeof(string))); dt.Columns.Add( new DataColumn( "Col1" , typeof(string))); dt.Columns.Add( new DataColumn( "Col2" , typeof(string))); dt.Columns.Add( new DataColumn( "Col3" , typeof(string))); dt.Columns.Add( new DataColumn( "Col4" , typeof(string))); dt.Columns.Add( new DataColumn( "Col5" , typeof(string))); dr = dt.NewRow(); dr[ "RowNumber" ] = 1; dr[ "Col1" ] = string. Empty ; dr[ "Col2" ] = string. Empty ; dr[ "Col3" ] = string. Empty ; dr[ "Col4" ] = string. Empty ; dr[ "Col5" ] = string. Empty ; dt.Rows.Add(dr); ViewState[ "CurrentTable" ] = dt; grvStudentDetails.DataSource = dt; grvStudentDetails.DataBind(); } |
Một chú ý quan trọng ở đoạn code trên là chúng ta sử dụng ViewState. ViewState sẽ giúp cho việc thêm và xóa một hàng tự động trong Gridview. Để thêm một row mới vào Gridview, chúng ta cần phải làm 2 việc, việc thứ nhất là khởi tạo một hàng mới ngay trên Gridview, việc thứ hai là ghi những giá trị được nhập vào data. Cả 2 việc đó được thực hiện bằng hàm dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| private void AddNewRow() { int rowIndex = 0; if (ViewState[ "CurrentTable" ] != null) { DataTable dtCurrentTable = (DataTable)ViewState[ "CurrentTable" ]; DataRow drCurrentRow = null; if (dtCurrentTable.Rows. Count > 0) { for (int i = 1; i <= dtCurrentTable.Rows. Count ; i++) { TextBox TextBoxName = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[1].FindControl( "txtName" ); TextBox TextBoxAge = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[2].FindControl( "txtAge" ); TextBox TextBoxAddress = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[3].FindControl( "txtAddress" ); RadioButtonList RBLGender = (RadioButtonList) grvStudentDetails.Rows[rowIndex].Cells[4].FindControl( "RBLGender" ); DropDownList DrpQualification = (DropDownList)grvStudentDetails.Rows[rowIndex].Cells[5].FindControl( "drpQualification" ); drCurrentRow = dtCurrentTable.NewRow(); drCurrentRow[ "RowNumber" ] = i + 1; dtCurrentTable.Rows[i - 1][ "Col1" ] = TextBoxName.Text; dtCurrentTable.Rows[i - 1][ "Col2" ] = TextBoxAge.Text; dtCurrentTable.Rows[i - 1][ "Col3" ] = TextBoxAddress.Text; dtCurrentTable.Rows[i - 1][ "Col4" ] = RBLGender.SelectedValue; dtCurrentTable.Rows[i - 1][ "Col5" ] = DrpQualification.SelectedValue; rowIndex++; } dtCurrentTable.Rows.Add(drCurrentRow); ViewState[ "CurrentTable" ] = dtCurrentTable; grvStudentDetails.DataSource = dtCurrentTable; grvStudentDetails.DataBind(); } } else { Response.Write( "ViewState is null" ); } SetPreviousData(); } |
Và hiển thị lại dữ liệu đã set
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| private void SetPreviousData() { int rowIndex = 0; if (ViewState[ "CurrentTable" ] != null) { DataTable dt = (DataTable)ViewState[ "CurrentTable" ]; if (dt.Rows. Count > 0) { for (int i = 0; i < dt.Rows. Count ; i++) { TextBox TextBoxName = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[1].FindControl( "txtName" ); TextBox TextBoxAge = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[2].FindControl( "txtAge" ); TextBox TextBoxAddress = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[3].FindControl( "txtAddress" ); RadioButtonList RBLGender = (RadioButtonList) grvStudentDetails.Rows[rowIndex].Cells[4].FindControl( "RBLGender" ); DropDownList DrpQualification = (DropDownList)grvStudentDetails.Rows[rowIndex].Cells[5].FindControl( "drpQualification" ); TextBoxName.Text = dt.Rows[i][ "Col1" ].ToString(); TextBoxAge.Text = dt.Rows[i][ "Col2" ].ToString(); TextBoxAddress.Text = dt.Rows[i][ "Col3" ].ToString(); RBLGender.SelectedValue = dt.Rows[i][ "Col4" ].ToString(); DrpQualification.SelectedValue = dt.Rows[i][ "Col5" ].ToString(); rowIndex++; } } } } |
Cũng giống như việc add thêm row mới, thì việc delete một row nào đó sẽ được thực hiện dựa trên sự click chuột vào row mà user đã chọn. Hàm delete một rows đã chọn như sau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| protected void grvStudentDetails_RowDeleting(object sender, GridViewDeleteEventArgs e) { SetRowData(); if (ViewState[ "CurrentTable" ] != null) { DataTable dt = (DataTable)ViewState[ "CurrentTable" ]; DataRow drCurrentRow = null; int rowIndex = Convert.ToInt32(e.RowIndex); if (dt.Rows. Count > 1) { dt.Rows.Remove(dt.Rows[rowIndex]); drCurrentRow = dt.NewRow(); ViewState[ "CurrentTable" ] = dt; grvStudentDetails.DataSource = dt; grvStudentDetails.DataBind(); for (int i = 0; i < grvStudentDetails.Rows. Count - 1; i++) { grvStudentDetails.Rows[i].Cells[0].Text = Convert.ToString(i + 1); } SetPreviousData(); } } } |
Và sau đó reset data ở các row khác
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| private void SetRowData() { int rowIndex = 0; if (ViewState[ "CurrentTable" ] != null) { DataTable dtCurrentTable = (DataTable)ViewState[ "CurrentTable" ]; DataRow drCurrentRow = null; if (dtCurrentTable.Rows. Count > 0) { for (int i = 1; i <= dtCurrentTable.Rows. Count ; i++) { TextBox TextBoxName = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[1].FindControl( "txtName" ); TextBox TextBoxAge = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[2].FindControl( "txtAge" ); TextBox TextBoxAddress = (TextBox) grvStudentDetails.Rows[rowIndex].Cells[3].FindControl( "txtAddress" ); RadioButtonList RBLGender = (RadioButtonList) grvStudentDetails.Rows[rowIndex].Cells[4].FindControl( "RBLGender" ); DropDownList DrpQualification = (DropDownList)grvStudentDetails.Rows[rowIndex].Cells[5].FindControl( "drpQualification" ); drCurrentRow = dtCurrentTable.NewRow(); drCurrentRow[ "RowNumber" ] = i + 1; dtCurrentTable.Rows[i - 1][ "Col1" ] = TextBoxName.Text; dtCurrentTable.Rows[i - 1][ "Col2" ] = TextBoxAge.Text; dtCurrentTable.Rows[i - 1][ "Col3" ] = TextBoxAddress.Text; dtCurrentTable.Rows[i - 1][ "Col4" ] = RBLGender.SelectedValue; dtCurrentTable.Rows[i - 1][ "Col5" ] = DrpQualification.SelectedValue; rowIndex++; } ViewState[ "CurrentTable" ] = dtCurrentTable; //grvStudentDetails.DataSource = dtCurrentTable; //grvStudentDetails.DataBind(); } } else { Response.Write( "ViewState is null" ); } //SetPreviousData(); } |
Comments[ 0 ]
Đăng nhận xét