การใช้งาน GridView FormView การแสดงรูปภาพ
การแสดงรูปภาพผ่าน FormView สร้าง datasource ติดต่อกับตาราง UserPic เพื่อเลือก username และ รูปภาพ ขึ้นมาแสดงผล โดยให้ค่าพารามิเตอร์ username มาจาก Session "SELECT * FROM [UserPic] WHERE ([username] = @username)” สร้าง FormView แล้วจับคู่กับ datasource ข้างต้น สร้าง <asp:Image> ภายใน FormView โดย Edit DataBindings ดังรูป
สร้างตารางเพิ่มเติม สร้างตารางโดยไปที่ Database explorer > table > add new table กำหนดให้สร้างตาราง Student เก็บข้อมูลนักศึกษา
สร้างหน้า Student.aspx สร้าง DataSource ติดต่อกับตาราง Student โดยใช้คำสั่ง select * from student กำหนดให้ DataSource สามารถเพิ่มคำสั่ง insert/update/delete ได้
หน้า Student.aspx สร้าง FormView เพื่อใช้แสดงผลข้อมูล Student สามารถเข้าไปแก้ไข template ได้ที่ Edit Template
การใช้งาน Gridview การสร้างฟิลด์แบบ template field และการเข้าถึงข้อมูลภายใน สร้าง DataSource2 เพื่อติดต่อกับตาราง Student โดยสามารถ insert/update/delete ผ่าน DataSource ได้ สร้าง Gridview แล้ว binding กับ DataSource2 ลบฟิลด์ midterm, final, pay ที่เป็นแบบ databound ทิ้งแล้วสร้างใหม่เป็นแบบ template field โดยสร้างเป็น textbox และ checkbox
โค้ดสำหรับประมวลผลคำสั่ง sql ตามพารามิเตอร์ cmd ที่ส่งเข้ามา protected void exeSQL(string cmd) { try { SqlCommand updatecmd = new SqlCommand(cmd, dbcon.conn); updatecmd.ExecuteNonQuery(); lbStatus.Text = "เพิ่มข้อมูลสำเร็จ"; } catch (SqlException se) { lbStatus.Text = "เพิ่มข้อมูลไม่สำเร็จ " + se.ToString();
//หมายเหตุ เขียนฟังก์ชันคำนวนเกรดเพิ่ม //โค้ดของปุ่มตกลง โดยจะดึงค่าของสถานะการชำระเงินมาคำนวน หากชำระเงินแล้วจะนำคะแนนกลางภาคและปลายภาค มาคำนวนหาเกรด หากยังไม่ได้ชำระเงินจะยังไม่ออกเกรดให้ //หมายเหตุ เขียนฟังก์ชันคำนวนเกรดเพิ่ม protected void Button1_Click(object sender, EventArgs e) { bool isPay; double mid,final; char grade; string ins_cmd; dbcon.connectToDB(); foreach (GridViewRow gvr in GridView1.Rows) { //วนลูปภายในกริดวิวทุกแถว isPay = ((CheckBox)(gvr.FindControl("cbPay"))).Checked; //ดึงค่าจาก checkbox ชื่อ cbPay ที่เราสร้างขึ้นมาเก็บในตัวแปร if (isPay == true) { //หากมีการชำระเงินแล้ว คือผู้ใช้มีการเลือก checkbox จริง mid = Convert.ToDouble(((TextBox)(gvr.FindControl("tbMid"))).Text); //ดึงค่าจาก tbMid เก็บใส่ตัวแปร final = Convert.ToDouble(((TextBox)(gvr.FindControl("tbFinal"))).Text); //ดึงค่าจาก tbFinal เก็บใส่ตัวแปร grade = ‘F’; //เดี๋ยวต่อมาเขียนฟังก์ชันคำนวนเกรดใส่แทนบรรทัดนี้ ins_cmd = “เขียนคำสั่ง update ให้ถูกต้องครบทุกฟิลด์………"; ins_cmd += " where studentID='"+gvr.Cells[0].Text+"'"; //เงื่อนไขการอัพเดทดูจาก studentID คนนั้น exeSQL(ins_cmd); //บรรทัดนี้เรียกใช้ฟังก์ชันประมวลคำสั่ง sql ที่เราเขียนไว้หน้าที่แล้ว } dbcon.closeDB(); GridView1.DataBind(); //คำสั่งอัพเดท gridview ให้แสดงผล
โค้ดการเปลี่ยนสีบรรทัดที่มีเกรดเป็น F โดยโค้ดส่วนนี้ให้ใส่ไปใน event ของ GridView โดยเปิด event ที่มีชื่อว่า RowDataBound (ตรงเครื่องหมายสายฟ้า) protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { char x; if (e.Row.RowType == DataControlRowType.DataRow) { x = Convert.ToChar( DataBinder.Eval(e.Row.DataItem, "grade")); if (x == 'F') { e.Row.BackColor = System.Drawing.Color.Red; }