สอบถามปัญหา Error RowDataBound ของ Gridview ครับ ภาษา ASP.NET C# ครับ
เนื่องจากได้ศึกษาจากหัวข้อ
https://www.thaicreate.com/asp.net/c-sharp-asp.net-gridview-control-databound.html
เพื่อจะทดลองสร้าง hyper link ใน grid view แต่ตอนนี้พบ Error นี้ครับ
Quote: Compiler Error Message: CS1061: 'ASP.sai_aspx' does not contain a definition for 'myGridView_RowDataBound' and no extension method 'myGridView_RowDataBound' accepting a first argument of type 'ASP.sai_aspx' could be found (are you missing a using directive or an assembly reference?)
โดย code ที่ทดลองทำเป็นดังนี้ครับ
Code (ASP)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="sai.aspx.cs" Inherits="MedicalWeb.sai" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>ThaiCreate.Com ASP.NET - GridView</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView id="myGridView" runat="server" AutoGenerateColumns="False"
onRowDataBound="myGridView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="CustomerID">
<ItemTemplate>
<asp:Label id="lblCustomerID" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label id="lblName" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<asp:Label id="lblEmail" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CountryCode">
<ItemTemplate>
<asp:Label id="lblCountryCode" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Budget">
<ItemTemplate>
<asp:Label id="lblBudget" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Used">
<ItemTemplate>
<asp:Label id="lblUsed" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
ส่วน code behind ครับ
Code (C#)
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Services;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Configuration;
using System.Data.SqlClient;
using System.Text;
using System.Xml;
using System.Collections.Generic;
using System.Net;
using System.IO;
namespace MedicalWeb
{
public partial class sai : System.Web.UI.Page
{
SqlConnection objConn;
SqlCommand objCmd;
String strSQL;
private string connectionString = WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
objConn = new SqlConnection(connectionString);
objConn.Open();
BindData();
}
void BindData()
{
String strSQL;
strSQL = "SELECT PanId, Name, Surname,Sex,Age,Inhospital FROM PanInfo WHERE Username = 'amuds'";
SqlDataReader dtReader;
objCmd = new SqlCommand(strSQL, objConn);
dtReader = objCmd.ExecuteReader();
//*** BindData to GridView ***//
myGridView.DataSource = dtReader;
myGridView.DataBind();
dtReader.Close();
dtReader = null;
}
void Page_UnLoad()
{
objConn.Close();
objConn = null;
}
void myGridView_RowDataBound(Object s, GridViewRowEventArgs e)
{
//*** CustomerID ***//
Label lblCustomerID = (Label)(e.Row.FindControl("lblCustomerID"));
if (lblCustomerID != null)
{
lblCustomerID.Text = (string)DataBinder.Eval(e.Row.DataItem, "PanId");
}
//*** Email ***//
Label lblName = (Label)(e.Row.FindControl("lblName"));
if (lblName != null)
{
lblName.Text = (string)DataBinder.Eval(e.Row.DataItem, "Name");
}
//*** Name ***//
Label lblEmail = (Label)(e.Row.FindControl("lblEmail"));
if (lblEmail != null)
{
lblEmail.Text = (string)DataBinder.Eval(e.Row.DataItem, "Surname");
}
//*** CountryCode ***//
Label lblCountryCode = (Label)(e.Row.FindControl("lblCountryCode"));
if (lblCountryCode != null)
{
lblCountryCode.Text = (string)DataBinder.Eval(e.Row.DataItem, "Sex");
}
//*** Budget ***//
Label lblBudget = (Label)(e.Row.FindControl("lblBudget"));
if (lblBudget != null)
{
//lblBudget.Text = DataBinder.Eval(e.Row.DataItem, "Budget").ToString();
lblBudget.Text = (string)DataBinder.Eval(e.Row.DataItem, "Age");
}
//*** Used ***//
Label lblUsed = (Label)(e.Row.FindControl("lblUsed"));
if (lblUsed != null)
{
//lblUsed.Text = DataBinder.Eval(e.Row.DataItem, "Used").ToString();
lblUsed.Text = (string)DataBinder.Eval(e.Row.DataItem, "Inhospital");
}
}
}
ไม่ทราบว่าต้องแก้ปัญหาอย่างไรครับ ขอบคุณล่วงหน้าครับ ติดมาอยู่ 2 วันแล้ว
นอกจากนั้นแล้ว onModeChanging หรือ OnItemUpdating ก็มี Error ลักษณะเดียวกันครับTag : ASP.NET, Ms SQL Server 2008, Web (ASP.NET), C#, VS 2010 (.NET 4.x)
Date :
2012-01-09 15:10:16
By :
amuds
View :
2575
Reply :
4
ดูผิวเผินยังไม่ได้เอาไปลอง Run นะครับ สังเกตเห็นว่าปีกกาหายไป 1 บรรทัด ที่บรรทัด 101 ไม่มี } เพื่อปิด void myGridView_RowDataBound ใช่หรือไม่ ลองตรวจสอบดู เพราะ Error เป็น Compiler Error ไม่ใช่ Runtime Error นะครับ
Date :
2012-01-09 15:50:23
By :
gunnermontana
สังเกตดี ๆ นะครับที่ Code Behind การประกาศ Method
Code (C#)
void myGridView_RowDataBound(Object s, GridViewRowEventArgs e)
มีการอ้าง Reference ที่ผิด โดยต้องแก้เป็น
Code (C#)
protected void myGridView_RowDataBound(Object s, GridViewRowEventArgs e)
หน้า Front มันไม่รู้จัก Event นะครับ มันก็เลย Error ออกมาแบบนั้น
Date :
2012-01-09 16:54:46
By :
gunnermontana
Load balance : Server 03